16.9. Автоматизация архивации rsync на базе ssh
Проблема
Требуется автоматизировать процесс архивации rsync на базе ssh.
Решение
Напишите сценарий, создайте задание cron и настройте keychain для аутентификации на удалённых хостах (использование keychain рассматривается в разделе 17.7).
Далее приводится простой сценарий для архивации каталогов /home
и /etc
пользователем backupadmin
, созданным специально для этой цели. Вторая строка сценария указывает cron использовать keychain для удалённой аутентификации:
#!/bin/bash
source /home/backupadmin/.keychain/$HOSTNAME-sh
rsync -av -e ssh --delete --force /home /etc stinkpad:home-etc-backup
После того как вы настроите выбор файлов и протестируете сценарий, создайте задание cron для запуска сценария. В следующем примере задание стартует каждый вечер в 22:00:
# crontab -e
0 22 * * * /usr/local/bin/rsyncbackup.sh
Комментарий
В документации часто предлагается создавать ключи с пустыми паролями, чтобы пересылку ssh можно было планировать в cron. Это небезопасно, так как любой, кто получит доступ к приватному ключу, сможет воспользоваться им в своих целях. Keychain выполняет аутентификацию за вас, позволяя защитить ключи паролем. У keychain есть один недостаток: программа не переживает перезагрузку, поэтому пароль (или пароли) приходится вводить заново при каждом запуске системы. Это повышает уровень безопасности, ведь вы не хотите, чтобы после перезагрузки компьютера любой мог получить беспрепятственный доступ к вашим удалённым хостам.
Использование rsync для автоматизации архивации не только сокращает затраты времени, но и минимизирует ошибки, связанные с ручной передачей файлов. Если вы администрируете сеть или сервер, rsync и ssh позволяют настроить регулярное резервное копирование и синхронизацию, особенно полезные для ежедневного сохранения конфигурационных файлов и пользовательских данных. Добавление в процесс keychain защищает данные от несанкционированного доступа, исключая необходимость использования пустых паролей. Настройка резервного копирования может включать также мониторинг логов для выявления ошибок, которые можно исправлять сразу, поддерживая актуальность резервных копий.
Важно помнить, что регулярные обновления ключей ssh и проверка прав доступа к данным минимизируют угрозы. Также, при использовании cron для автоматизации архивации, стоит периодически проверять журнал выполнения задач, чтобы убедиться в отсутствии сбоев и успешной синхронизации данных.
См. также
Ssh(l), rsync(l); раздел 16.8; раздел 17.7; страница Examples на сайте samba.anu.edu.au/rsync.