Как исключить файлы в rsync?

Я использую 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, почему? Как разрешить исключение этих файлов?

12
задан 6 May 2013 в 10:25

2 ответа

У вашей команды rsync есть несколько проблем (также см. Справочную страницу для rsync для подробного объяснения правил фильтрации).

  • нам нужна команда --exclude каждая для любого заданного шаблона.
  • указанные пути должны быть относительно исходного пути (без абсолютных путей).
  • опции должны быть заданы прежде, чем мы укажем источник и пункт назначения.

Для вашего примера будет работать следующий синтаксис:

rsync -avAX --exclude=another/ --exclude=temp/ ~/Documents/ ~/Backups/TEST

Обратите внимание, что если шаблон исключения заканчивается на /, он ссылается на каталог. Если вы пропустите это, файлы и каталоги с таким именем будут исключены. Замените его подстановочным знаком *, чтобы исключить все файлы или каталоги с этой строкой в ​​их именах.

0
ответ дан 6 May 2013 в 10:25

Возможно, вам будет проще добавить .rsync-filter файлов в исходные каталоги и использовать опцию -F.

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

-F: Опция -F является сокращением [...] для этого правила:

 --filter='dir-merge /.rsync-filter'

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

Например: в $ HOME / Documents / .rsync-filter

# you can add comments in filter files

- /another/
- /temp/

Вместо - вы также можете написать целое слово exclude.

Теперь вы можете

rsync -aAX -F $HOME/Documents/ $HOME/Backups/TEST/
0
ответ дан 6 May 2013 в 10:25

Другие вопросы по тегам:

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