Я использую Ubuntu Server 12.04, теперь я хочу сделать резервную копию некоторых файлов с помощью rsync, вот попытка:
rsync -aAX $HOME/Documents/* $HOME/Backups/TEST --exclude={$HOME/Documents/another/*,$HOME/Documents/temp/*}
Как видите, я хочу сделать резервную копию всех файлов в папке [ 112] $ HOME / Documents в папку $ HOME / Backups / TEST , но исключают файлы в папке , другие и [ 1112] температура . Но мне не удалось, rsync все равно скопировал файлы в обе исключенные папки:
ls $HOME/Backups/TEST/another
test
test - это файл в папке другой [ 116] , и он также копируется, хотя я исключаю файл в rsync, почему? Как разрешить исключение этих файлов?
У вашей команды rsync есть несколько проблем (также см. Справочную страницу для rsync для подробного объяснения правил фильтрации).
--exclude
каждая для любого заданного шаблона. Для вашего примера будет работать следующий синтаксис:
rsync -avAX --exclude=another/ --exclude=temp/ ~/Documents/ ~/Backups/TEST
Обратите внимание, что если шаблон исключения заканчивается на /
, он ссылается на каталог. Если вы пропустите это, файлы и каталоги с таким именем будут исключены. Замените его подстановочным знаком *
, чтобы исключить все файлы или каталоги с этой строкой в их именах.
Возможно, вам будет проще добавить .rsync-filter
файлов в исходные каталоги и использовать опцию -F
.
Со страницы руководства:
-F: Опция -F является сокращением [...] для этого правила:
--filter='dir-merge /.rsync-filter'
Это говорит rsync искать для файлов .rsync-фильтра для каждого каталога, которые были разбросаны по иерархии и используют их правила для фильтрации файлов при передаче.
blockquote>Например: в $ HOME / Documents / .rsync-filter
# you can add comments in filter files - /another/ - /temp/
Вместо
-
вы также можете написать целое словоexclude
.Теперь вы можете
rsync -aAX -F $HOME/Documents/ $HOME/Backups/TEST/