Як виключити файли в rsync?


12

Я використовую сервер ubuntu 12.04, тепер я хочу створити резервну копію деяких файлів за допомогою rsync, ось спробуйте:

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

Як бачите, я хочу створити резервну копію всіх файлів у папці $ HOME / Документи у папці $ HOME / Резервні копії / TEST , але виключати файли в папці іншої та темп . Але мені не вдалося, rsync все ще копіював файли в обидві виключені папки:

ls $HOME/Backups/TEST/another
test

test - це файл у папці інший , і він також копіюється, хоча я виключаю файл у rsync, чому? Як дозволити фактично виключити ці файли?

Відповіді:


11

З вашою командою rsync є кілька проблем (також див. Сторінку для rsync для детального пояснення правил фільтра).

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

Для вашого прикладу спрацює наступний синтаксис:

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

Зауважте, що якщо шаблон виключення закінчується, /він посилається на каталог. Якщо пропустити і те, і файли та каталоги з цим ім'ям будуть виключені. Замініть його символом, *щоб виключити всі файли чи каталоги із цим рядком у своїх іменах.


6
Це не зовсім правильно. Я не впевнений, як це працює, але з експериментів --exclude=/fooвиключить каталог fooбезпосередньо у джерелі, але --exclude=fooвиключить будь-які каталоги з ім'ям foo, навіть у підкаталогах.
Sparhawk

10

Можливо, вам буде простіше додавати .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/
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.