
У меня есть список файлов и мест назначения, которые мне нужно синхронизировать с помощью rsync, но я не хочу запускать rsync несколько раз (время подключения велико из-за использования ssh в моем случае).
Пример:
~/aaa remote:/~/aaa
~/bbb remote:/~/otherplace/bbb
…
Как вы можете себе представить, список больше, и в моем случае мне приходится запускать один и тот же набор на нескольких удаленных серверах.
Как это можно легко реализовать? Я хочу, чтобы rsync запускался один раз на каждом сервере.
решение1
Я сделал быстрое исправление для этого однажды, когда я хотел взломать это поведение в существующем скрипте rsync, который передавал только в определенную папку: я создал каталог символических ссылок для этой цели на обеих сторонах и сказал rsync разыменовывать ссылки ( -L
) во время передачи. На моей стороне ссылки были разыменованы в их содержимое и переданы в каталог на удаленной стороне, где они были помещены в символические ссылки, которые указывали на каталоги, где я хотел их видеть.
На самом деле это не самый плохой способ указать файлы для резервного копирования. Он универсален и легко настраивается без изменения файлов конфигурации (ну, структуры симлинковявляетсяфайл конфигурации, в некотором роде).
Этот конкретный пример не является хорошим решением, если вы хотитенетОднако в некоторых случаях следует разыменовывать ссылки для передачи.
решение2
Если проблема в ssh, то, возможно, вы можете ускорить процесс, повторно используя ssh-соединение, поместив это в ~/.ssh/config или какой-либо другой соответствующий файл конфигурации ssh:
Host *
ControlMaster auto
ControlPath /tmp/%r@%h:%p