Автоматизация резервного копирования дубликатов с помощью cron
Как автоматизировать резервное копирование с использованием дублирования cron с использованием шифрования gpg и бэкэнда ssh?
2 ответа
Фон
Оригинальная ссылка: http://peterpetrakis.blogspot.com/2013/06/automating-and-encrypting-duplicity.html
Потеря данных в прошлом и взлом хранилища позволяют предположить, что регулярно делать резервные копии. Я хотел избыточности на случай, если мой локальный сервер вышел из строя, и я хотел зашифровать свои резервные копии с помощью защищенного паролем ключа gpg.
Текущее решение использует парольную фразу, хранящуюся в виде простого текста вне пути резервного копирования. Я планирую изучить вопрос о перемещении ключа gpg на смарт-карту и использовании ключа для разблокировки. Если у кого-то есть какие-либо дополнительные решения, пожалуйста, опишите их подробно.
Постоянные необходимые переменные среды
Запуск чего-либо из cron отсоединяет его от вашей текущей среды, вы теряете все переменные, описывающие такие вещи, как ваш ssh-agent gpg-agent, то, что вам нужно, чтобы начать общаться с удаленным сервером.
Я выбрал простой подход, в моем ~.bashrc я создал следующее.
cat> ~ /.backenvrc << EOF # используется скриптом резервного копирования crontab export SSH_AGENT_PID=$SSH_AGENT_PID экспорт SSH_AUTH_SOCK=$SSH_AUTH_SOCK экспорт GPG_AGENT_INFO=$GPG_AGENT_INFO экспортировать GPGKEY=XXX-insert-your-gpg-key-here-XXX EOF
и просто получить его из скрипта резервного копирования, указанного в моем файле crontab, мне просто нужно войти в систему только один раз, чтобы заполнить этот файл.
Настройка Crontab
# crontab -l # mh dom mon dow команда MAILTO=ppetraki@ локальный BACKUP=/ дом /ppetraki/Documents/System/ Резервное копирование # 0 0 * * * /usr/bin/crontab -l > $BACKUP/crontab-backup 0 0 * * * /usr/bin/dpkg --get-selections > $BACKUP/instal-software 0 0 * * * /usr/local/bin/ppetraki-backup.sh inc 0 0 * * Пт /usr/local/bin/ppetraki-backup.sh полный
Обратите внимание, что я также создаю резервную копию моего crontab и моего списка установленного программного обеспечения, в конце концов я перенесу это в другой скрипт, который также выполняет такие вещи, как
1) резервное копирование моих закладок из Chrome и Firefox
2) резервное копирование почты в недвоичном формате
Текущий формат cron выполняет инкрементное резервное копирование каждую ночь и полное резервное копирование каждую пятницу.
Скрипт драйвера
Это оборачивает вызов двуличия и получает необходимые переменные среды. Сама двойственность может быть пугающей со всеми переключателями командной строки и даже более обременительной, если у вас несколько целей. У меня есть резервные копии, сначала на локальный сервер и на удаленный сервис, предоставляемый rsync.net (отличная поддержка клиентов!). Я обнаружил, что хоркрукс - замечательная, легкая обертка для двуличности, отвечающая моим потребностям.
Сценарий драйвера, который является внешним по отношению к моему пути резервного копирования, также содержит мою парольную фразу GPG для шифрования моих резервных копий. В конце концов я хочу перейти на систему, управляемую смарт-картами [показано здесь] ( http://blog.josefsson.org/2011/10/11/unattended-ssh-with-smartcard/)
[/Usr/local/bin/ppetraki-backup.sh]
#! / Bin / Баш экспорт PATH=$PATH:/usr/local/bin Действие =$1 USER=XXX export HOME=/home/$USER источник $HOME/.backenvrc эхо "проверка среды" echo "gpg-agent: $ {GPG_AGENT_INFO}" echo "gpg-key: $ {GPGKEY}" echo "ssh-agent-pid: $ {SSH_AGENT_PID}" echo "ssh-auth-sock: $ {SSH_AUTH_SOCK}" if [-z $ action]; затем эхо "требует действий!" выход 1 фи PASSPHRASE экспорт = [-z $ PASSPHRASE] && выход 1 эхо "начало" для настройки в local_backup remote_backup делать horcrux clean $config horcrux $action $config сделанный
Использование крестража для борьбы с двуличностью
У Horcrux есть понятие профилей, которое устраняет всю сложность управления двойным интерфейсом командной строки. Вот пример профиля.
cat /home/ppetraki/.horcrux/local_backup-config destination_path = "Rsync: //192.168.1.XXX/backups/personal"
cat ~ /.horcrux / local_backup-exclude - / home / ппетраки / песочница - / home / ппетраки / жучки - / home / ppetraki / Загрузки - / home / ппетраки / видео - /home/ppetraki/.xsession-errors - /home/ppetraki/.thumbnails - /home/ppetraki/.local - /home/ppetraki/.gvfs - /home/ppetraki/.systemtap - /home/ppetraki/.adobe/Flash_Player/AssetCache - /home/ppetraki/.thunderbird - /home/ppetraki/.mozilla - /home/ppetraki/.config/google-googletalkplugin - /home/ppetraki/.config/google-chrome - /home/ppetraki/.cache - /home/ppetraki/**[cC] боль *
Мне показалось проблематичным создавать резервные копии только подкаталогов таких вещей, как mozilla и google-chrome, вместо этого я напишу дополнительный скрипт, чтобы вишня выбрала эти файлы для резервного копирования.
Основной конфигурационный файл horcrux
кот ~/.horcrux/horcrux.conf source="/home/ppetraki/" # Обеспечить конечный слеш encrypt_key=XXXXXX # Идентификатор открытого ключа для шифрования резервных копий с sign_key='-' # Идентификатор ключа для подписи резервных копий (оставьте как '-', чтобы не подписывать) use_agent = false # Использовать gpg-agent? remove_n=3 # Количество полных наборов файлов для удаления verbosity=5 # Записывает все изменения файла (см. справочную страницу duplicity) vol_size=25 # Разделить резервную копию на тома объемом 25 МБ full_if_old=30D # Вызвать "полную" операцию для выполнения полной # резервное копирование, если оно старше 360 дней backup_basename='backup' # Имя каталога для локальных резервных копий (т. е. место назначения # /Volumes/my_drive/backup/ или /media/my_drive/backup/) dup_params='- use-agent' # Параметры для передачи в Duplicity
Это здорово, так как сводит вызов резервного копирования к следующему:
$ horcrux inc local_backup
мониторинг
Я определил MAILTO в моем crontab, а также установил mutt и перенастроенный постфикс для локальной доставки почты. Каждую ночь я получаю отчет о проделанной работе.
Заключение
Я потратил довольно много времени, чтобы определить, как автоматизировать это и обеспечить надежное шифрование. Я надеюсь, что вы найдете это полезным.
Вы можете использовать duplicity-automate ( http://duplicity-auto.sf.net/).
Он поддерживает красивый синтаксис XML и имеет несколько обработчиков для создания дампов MySQL/PostgreSQL.
Просто определите два файла, например:
<?xml version="1.0"?>
<duplicity-automate>
<backups>
<backup type="dir">
<passphrase>abcdef</passphrase>
<remote-name>home</remote-name>
<local-path>/home</local-path>
<expiry-period>1Y</expiry-period>
</backup>
<backup type="dir">
<passphrase>qwerty</passphrase>
<remote-name>config</remote-name>
<local-path>/etc</local-path>
<expiry-period>1Y</expiry-period>
</backup>
</backups>
</duplicity-automate>
а также
<?xml version="1.0"?>
<duplicity-automate>
<servers>
<server>
<protocol>ftp</protocol>
<username>john</username>
<hostname>example.com</hostname>
<password>1234</password>
<path>mydirectory/backups</path>
</server>
</servers>
</duplicity-automate>
и это все!