Как мне сказать, что rsync должен запускаться, только если существует каталог назначения? - PullRequest
6 голосов
/ 04 января 2009

У меня есть этот скрипт bash, выполняющий резервное копирование на внешний жесткий диск ... только если этот диск смонтирован (OS X):

DIR=/Volumes/External; 
if [ -e $DIR ]; 
then rsync -av ~/dir_to_backup $DIR; 
else echo "$DIR does not exist"; 
fi

Это работает, но я чувствую, что неправильно читаю справочную страницу rsync. Есть ли встроенная опция rsync, чтобы прервать запуск, если каталог назначения верхнего уровня не существует? Без проверки на наличие / Volumes / External каталог с таким именем будет создан, если он еще не подключен.

Ответы [ 3 ]

3 голосов
/ 04 января 2009

AFAIK нет, но вы можете смоделировать поведение с помощью косой черты:

rsync -av dir_to_backup /Volumes/External/;

Он завершится с ошибкой, если каталог не существует (что может или не может быть желательным).

Кроме того, вы всегда можете оптимизировать, если:

test -e $DIR && rsync -av ...

3 голосов
/ 04 января 2009

Эти два флага выглядят так, как вы ищете:

--existing, --ignore-non-existing

со страницы руководства:

- существующий, --ignore-несуществующий
Это говорит rsync пропускать создание файлов (включая каталоги), которые еще не существуют в месте назначения. Если этот параметр сочетается с параметром --ignore-существующие, файлы не будут обновляться (что может быть полезно, если все, что вам нужно, это удалить посторонние файлы).

1 голос
/ 04 января 2009

Нет, похоже, что нет такой опции, насколько я вижу на странице руководства.

...