Как исключить файлы в rsync? - proUbuntu
Винтажный Клуб для гитаристов
12 голосов
/

Я использую Ubuntu Server 12.04, теперь я хочу сделать резервную копию некоторых файлов с помощью rsync, вот попытка:

rsync -aAX $HOME/Documents/* $HOME/Backups/TEST --exclude={$HOME/Documents/another/*,$HOME/Documents/temp/*} 

Как видите, я хочу сделать резервную копию всех файлов в папке $ HOME / Documents в папку $ HOME / Backups / TEST , но исключить файлы в папке , другие и temp . Но мне не удалось, rsync все равно скопировал файлы в обе исключенные папки:

ls $HOME/Backups/TEST/another
test

test - это файл в папке другой , и он также копируется, хотя я исключаю файл в rsync, почему ? Как разрешить исключение этих файлов?

Ответы [ 2 ]

11 голосов
/

Есть несколько проблем с вашей командой rsync (также смотрите man-страницу для rsync для подробного объяснения правил фильтрации).

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

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

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

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

10 голосов
/

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

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

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

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

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

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

# you can add comments in filter files

- /another/
- /temp/

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

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

rsync -aAX -F $HOME/Documents/ $HOME/Backups/TEST/
Добро пожаловать на сайт proUbuntu, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...