rsync N новейшие файлы в каталоге

Каков был бы самый легкий способ пойти о rsyncing n новейшие файлы в каталоге к удаленному серверу?

6
задан 08.11.2010, 19:20

2 ответа

Самый легкий путь состоит в том, чтобы выполнить zsh вместо удара.

rsync -a -- /path/to/directory/*(om[1,42]) remote-server:

В круглых скобках, om файлы заказов к обратному времени изменения (т.е. путем увеличения возраста), и [1,42] выбирает первые 42 соответствия.

Если Вы хотите только регулярные файлы и не каталоги, добавьте a . после вводной круглой скобки. Для большего количества возможностей посмотрите под “спецификаторами шарика” в zshexpn страница справочника.

Если Вы хотите соответствовать файлам в дереве каталогов, базированном в /path/to/directory, вместо только в том каталоге, использовать /path/to/directory/**/*(.om[1,42]). Это отправит все файлы в тот же каталог на цели, все же.

6
ответ дан 07.12.2019, 15:58

Принятие Вас хочет отправить файлы от текущего рабочего каталога:

rsync `ls -tp | grep -v / | head -n <n>` <destination> <options>

добьется цели. Например:

rsync `ls -tp | grep -v / | head -n 10` user@host:/dest/dir/ --progress --compress

Это даст ошибку, если не будет никаких файлов, которые будут найдены в текущем рабочем каталоге, или если какой-либо из главных файлов содержит пробелы или другие специальные символы.

'Символы вокруг ls -tp | grep -v / | head -n <n> скажите удару выполнять команды, и заменил их получающимся списком файлов, поскольку пространство разделило список. -t опция говорит ls к виду меткой времени, -p говорит этому добавлять a / после имен каталогов и grep части фильтрует окончание строк / таким образом, Вы не заканчиваете тем, что отправили каталоги. Добавить -c к ls опции, если Вы хотите, чтобы новейшие файлы были оценены ко времени создания вместо времени изменения (хотя примечание, что некоторые программы удалят и заменят файлы вместо того, чтобы обновить их так ctime и mtime, может быть тем же даже при том, что файл, кажется, был вокруг дольше).

Я не буду утверждать, что это - без сомнения самый легкий путь, но это был бы способ, которым я буду сначала думать.


(sub-question-in-a-comment mwm)

что относительно наоборот? сервер к локальному?

Это было бы немного более сложно, поскольку я не думаю, что у Вас может быть несколько удаленных источников файла на rsync командной строке как Вы, может локальные. Вы могли работать rsync на сервере через ssh, открытие туннеля назад к Вашему локальному sshd (с тем же ssh вызов Вы прокручиваете rsync) для получения соединения, по существу использовал ту же команду с другой стороны.

2
ответ дан 07.12.2019, 15:58

Теги

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