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


14

Я намагаюся опрацювати синтаксис фільтра rsync для виконання складних включати / виключати і намагаюся досягти наступного:

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

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

Відповіді:


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