Использование rsync для передачи файлов при помощи оболочки ssh и ключей
rsync позволяет выполнять синхронизацию файлов и каталогов в двух местах. При синхронизации rsync не копирует файлы которые не изменялись с прошлой синхронизации.
Для начала сгенерируем ключ для безпарольного доступа к удаленному хосту (passphrase оставим пустым):
ssh-keygen
Сгенерированный публичный ключ необходимо добавить на удаленный хост. Для этого лучше всего подходит команда ssh-copy-id
. Предварительно удаленный хост должен быть доступен по ssh с использованием пароля:
ssh-copy-id
Подключимся к удаленному хосту по ssh, убедившись что доступ по ключу работает:
ssh <username>@<hostname>
Если при генерации ключа указывалось не стандартное имя и расположение то необходимо указать путь к ключу используя опцию
-i
(identity file)
Теперь можно приступить к использованию rsync. Просто выполняем команду rsync для синхронизации файлов с удаленным хостом:
rsync -Pav /path/to/source <username>@<hostname>:/path/to/destication
Если при генерации ключа указывалось не стандартное имя и расположение то необходимо к команде rsync добавить опцию указания оболочки для транспорта
-e
и указать ключ явно:
rsync -Pav -e "ssh -i <path/to/private/key>" /path/to/source <username>@<hostname>:/path/to/destication
Таким образом можно к примеру автоматизировать синхронизацию каталогов на удаленном хосте используя задачу cron
или таймеры systemd
.