Комплекс включает / исключает с rsync

14

Я пытаюсь выработать синтаксис фильтра rsync для выполнения сложных включений / исключений и пытаюсь добиться следующего:

Include /
Exclude /home
Include /home/user1/*
Include /home/user2/subdir/*

Я пробовал много вариантов синтаксиса фильтра, и, несмотря на то, что я много раз читал справочную страницу, я не могу получить такой эффект. Фильтры Rsync кажутся очень мощными, и мне трудно поверить, что они не справились с общим сценарием, таким как этот.

brianmathis
источник

Ответы:

17

Вы должны включить все родительские каталоги до нужного каталога перед использованием правила исключения.

Например, я использую следующее в сценарии резервного копирования:

rsync -av \ 
--filter='+ /var/' \
--filter='+ /var/backups/' \
--filter='- /var/*' \
/ \
$DEST

Так что в вашем случае вам нужно что-то вроде следующего:

rsync -av \ 
--filter='+ /home/' \
--filter='+ /home/user1/' \
--filter='+ /home/user2/' \
--filter='+ /home/user2/subdir/' \
--filter='- /home/user2/*' \
--filter='- /home/*' \
/ \
$DEST
Шейн Мейерс
источник
Отлично. Заняло у меня некоторое время.
yclian
Каким-то образом, когда я читал man rsync, я неправильно понял, что правильный порядок смешивания включает и исключает. Мне потребовался час, чтобы понять это ...
Адам Рычковски
6

В командной строке:

rsync --dry-run --verbose --recursive --include=/home/user1 --exclude=/home/* / DEST

Удалите, --dry-runчтобы сделать его функциональным, замените «DEST» на ваше место назначения и добавьте пользователя и хост к источнику «/», если это необходимо.

Из файла правила:

rsync --dry-run --verbose --recursive --filter='merge /etc/rsync/somerules.rules' / DEST

где содержимое /etc/rsync/somerules.rulesможет быть:

+/ /home/user1
-/ /home/*

Вы должны проверить их, и вам может потребоваться внести некоторые коррективы, но это должно помочь вам начать.

Приостановлено до дальнейшего уведомления.
источник
ОК, это работает. У меня есть более сложный случай, который я добавил к вопросу. Дополнительное включение не работает со сценарием subdir.
brianmathis