Синхронизация двух каталогов без rsync

Это приглашение оболочки, точнее, это основное приглашение оболочки (их несколько). Это способ оболочки сказать: «продолжайте, я готов к вводу данных сейчас».

Подсказка % часто встречается в оболочках типа csh, а в оболочках sh (таких как bash и ksh93) обычно использует $ в качестве подсказки.

Подсказка обычно меняется на # для пользователя root, поскольку достаточно опытный пользователь должен напоминать об этой возможности, имея альтернативную подсказку (согласно стандарту POSIX).

Основное приглашение в оболочках типа sh определяется значением переменной оболочки PS1.


Резюме приведенных ниже комментариев с дополнениями:

Символ # приглашения root (используется оболочками sh и csh) чтобы совпадать с общим символом комментария оболочки. Копирование и вставка команды от имени пользователя root приведет к тому, что вставленная команда станет неработоспособной, если также будет скопировано приглашение оболочки. Обратите внимание, что # был принят в качестве приглашения root до того, как в оболочке появилось соглашение о комментариях (ссылка: электронное письмо от Дуга Макилроя ).

Оболочки es и rc Plan 9 используют символ ; в качестве подсказки по умолчанию. Следствием этого является то, что копирование и вставка команды, включая подсказку, по-прежнему будет означать, что вставленная команда действительна (и она будет выполнена).

Один из способов включения пользовательского, но по-прежнему доступного для копирования приглашения оболочки — использовать : something ;, где something может быть текущим каталогом, имя хоста или время, например.

1
31.08.2016, 15:55
1 ответ

Мне удалось найти решение, но пока не в одной строчке. Я все еще работаю над этим.

Предполагая, что вы можете доверять дате создания / изменения файловой системы, можно использовать find для создания списка файлов, вывода его в текстовый файл, а затем с помощью цикла выполнить scp на целевом сервере. Кажется, я не могу правильно получить результат поиска непосредственно в scp.

Я использовал вспомогательную программу sshpass , но было бы лучше использовать ключевые файлы, я знаю

найти файлы на исходном сервере с целевого сервера и сохранить результат, ограничив результат только одним каталогом и только файлы.

sshpass -p 'MyPassword' ssh [user@server] "find [path/to/look/in] -maxdepth 1 -mtime -1 -type f" > /tmp/last-24-hours-file-list.txt

Зациклить выходной файл и вызвать scp для каждого файла

while read filename; do sshpass -p 'MyPassword' scp -Crpv [user@server]:$filename [path/to/save/to]; done < /tmp/last-24-hours-file-list.txt
0
28.01.2020, 01:11

Теги

Похожие вопросы