Назад | Перейти на главную страницу

rsync несколько исходных каталогов в несколько целевых каталогов

У меня есть несколько исходных каталогов, скажем /home/me/source1 и /mnt/somedisk/source2. Я хочу подтолкнуть их обоих к чему-то вроде /home/someoneelse/dest1 и /home/someoneelse/dest соответственно. Я бы хотел использовать для этого одну команду rsync, возможно ли это?

А как насчет N каталогов в N каталогов, где каждый каталог уникален?

Если вы делаете это часто, я бы также предложил решить эту проблему с помощью сценариев.

Если корень назначения всегда один и тот же, например: rsync /foo/blah1 /bar/ и rsync /fin/blah2 /bar/

Вы можете справиться с этим с помощью простого цикла for в Bash.

for x in /foo/blah1 /fin/blah2
do
    rsync $x /bar
done

И в этом отношении вы также можете настроить вложенные циклы, чтобы различные источники могли переходить к каждому месту назначения. Мы уже много лет используем это в качестве основной системы резервного копирования в нашем офисе.

Если вам не нужно копировать какие-либо символические ссылки, вы можете настроить каталог на принимающей стороне, который имитирует макет каталогов на отправляющей стороне, причем каждая ссылка указывает на предполагаемое место назначения.

Единственный подход - наличие символических ссылок source1 и source2 на принимающей стороне и запустить процесс получения с --keep-dirlinks.

Если вам нужно передать символические ссылки, вы можете сделать --no-implied-dirs работать на вас. Снова у вас будут символические ссылки на принимающей стороне, но на этот раз внутри структуры каталогов, т.е. home/me/ будут каталогами (внутри целевой папки rsync, где бы вы ни хотели) и home/me/source1 будет символической ссылкой на /home/someoneelse/dest1. Когда не используется --keep-dirlinks, то переносить source1 сам (так как это удалит символическую ссылку и заменит ее каталогом), но вместо этого все файлы внутри source1, т.е. /home/me/source1/*. Использовать shopt -s dotglob чтобы найти и скрытые файлы в нем.

Все это проверяется только удаленно: я знаю, что когда-то что-то в этом роде работало, но сейчас у меня нет подробностей или команд. Поэтому проверьте возможные комбинации, в частности, изменения между каталогами и символические ссылки на каталоги, прежде чем использовать это в производственной установке.