Я хочу rsync нескольких источников, и я думаю, лучший способ добиться этого.
например
/etc/fstab
/home/user/download
Я думал о 3 решениях:
- Решение 1
множественный вызов rsync
rsync -a /etc/fstab bkp
rsync -a /home/user/download bkp
против: сложнее иметь агрегированную статистику
- Решение 2
создайте tobackup
папку, содержащую символическую ссылку, и используйте -L
параметры
sync -aL /home/user/tobackup bkp
con: содержимое для резервного копирования не должно содержать символических ссылок
- Решение 3
переместить файлы в резервную копию и создать символическую ссылку в исходном месте
rsync -a /home/user/tobackup bkp
con: некоторая ручная настройка
Какой из них вы рекомендуете?
Есть ли способ лучше ?
Ответы:
Вы можете передать несколько исходных аргументов.
Это создает
bkp/fstab
иbkp/download
, как отдельные команды, которые вы дали. Может быть желательно сохранить исходную структуру вместо этого. Для этого используйте/
в качестве источника и используйте правила include-exclude, чтобы указать, какие файлы следует копировать. Есть два способа сделать это:Явно включите каждый файл, а также каждый компонент каталога, ведущий к нему,
/***
в конце каталогов, когда вы хотите скопировать все дерево каталогов:Включите все каталоги верхнего уровня с
/*/
(чтобы rsync проходил/etc
и/home
при поиске файлов для копирования) и каталоги второго уровня с/*/*/
(для/home/user
), но удалите каталоги, в которые не копируются никакие файлы. Это более удобно, потому что вам не нужно явно указывать родителей. Вы можете даже использовать--prune-empty-dirs --include='*/'
вместо подсчета количества уровней, но здесь это нецелесообразно, так как rsync будет проходить через всю файловую систему для изучения каталогов, даже если ни одно из правил включения не может соответствовать чему-либо внешнему/etc
и/home/user/download
.источник
Мне очень нравится ответ Жиля, однако я хотел бы добавить, что, на мой взгляд, требование синхронизации нескольких папок при сохранении структуры каталогов лучше всего выполняется путем передачи нескольких исходных аргументов в сочетании с
--relative
параметром.В этом случае мы могли бы иметь что-то следующее:
что приведет к
bkp/etc/fstab
иbkp/home/user/download
.Самое приятное в этом - то, что (я полагаю, начиная с rsync v. 2.6.7) мы можем по существу контролировать, какую часть структуры каталогов мы хотим воспроизвести на получателе.
(См. Документацию по
--relative
опции здесь )Так, например, если бы мы сделали это
мы бы в конечном итоге
bkp/user1/download
иbkp/user2/download
.источник
Это также работает - фигурные скобки, содержащие разделенный запятыми список источников.
Несколько похоже на то, что происходит, когда вы вызываете фигурные скобки sytnax с помощью cp и некоторых других утилит:
источник
-e