rsync имитировать --ignore-missing-args на старой версии сервера

У меня есть сценарий, который использует аргументы rsync --files-from с точным списком файлов (без правил фильтрации, без подстановочных знаков и т. д.) и --ignore-missing-args (для игнорирования файлов, которые будут созданы сервером в будущем) для периодической передачи файлов.

Сценарий должен завершаться при любой серьезной ошибке (например, потеря соединения); На сервере стоит более старая версия rsync (3.0.4; локально у меня версия 3.1.0), которая не поддерживает --ignore-missing-args:

rsync: on remote machine: --ignore-missing-args: unknown option

Без опции --ignore-missing-args любые отсутствующие файлы (и в будущем файлы, которые будут созданы) приведут к ошибке rsync с кодом возврата, не равным 0.

Есть ли обходной путь для этого?

Заранее спасибо!


person Philipp H.    schedule 13.04.2017    source источник
comment
Почему бы просто не обновить rsync на другой машине? Это был бы самый простой обходной путь.   -  person l'L'l    schedule 13.04.2017
comment
Это HPC-кластер, у меня нет root-доступа. И обновление может занять много времени.   -  person Philipp H.    schedule 13.04.2017
comment
Здесь есть несколько возможных обходных путей: unix.stackexchange.com/q/86879, так что, возможно, посмотрите. Хотя вы можете не получить такого же точного поведения...   -  person l'L'l    schedule 13.04.2017


Ответы (1)


Нашел решение:

Используйте --include-from и добавьте + перед каждым файлом, указанным в списке файлов, а также добавьте - *, чтобы исключить любые другие файлы, например.

$ cat files.txt
+ foo.bar
+ bar.foo
- *

Последняя команда rsync:

rsync --include-from=files.txt [path] [host]:[path]
person Philipp H.    schedule 13.04.2017