Автоматизация дублирования резервных копий с использованием cron

6

Как автоматизировать дублирование резервных копий с помощью cron с использованием gpg-шифрования и ssh-сервера?

    
задан ppetraki 18.06.2013 в 17:43
источник

2 ответа

6

Фон

Оригинальная ссылка: Ссылка

Потерпев потерю данных в прошлом, а взлом на хранении показывает, что неплохо иметь регулярные резервные копии. Я хотел иметь избыточность в случае, если локальный сервер не удался, и я хотел зашифровать мои резервные копии, используя пароль защищенный ключ gpg.

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

Сохраняющиеся требуемые переменные среды

Запуск чего-либо от cron отделяет его от вашей текущей среды, вы теряете все переменные, описывающие такие вещи, как ваш gsh-агент ssh-agent, необходимо начать общаться с удаленным сервером.

Я сделал простой подход, в моем ~ .bashrc я создал следующее.

cat > ~/.backenvrc << EOF
# used by crontab backup script
export SSH_AGENT_PID=$SSH_AGENT_PID
export SSH_AUTH_SOCK=$SSH_AUTH_SOCK
export GPG_AGENT_INFO=$GPG_AGENT_INFO
export GPGKEY=XXX-insert-your-gpg-key-here-XXX
EOF

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

Настройка Crontab

# crontab -l
# m h  dom mon dow   command
[email protected]
BACKUP=/home/ppetraki/Documents/System/Backup
#
0 0  * * *      /usr/bin/crontab -l  > $BACKUP/crontab-backup
0 0  * * *      /usr/bin/dpkg --get-selections > $BACKUP/installed-software
0 0  * * *      /usr/local/bin/ppetraki-backup.sh inc
0 0  * * Fri    /usr/local/bin/ppetraki-backup.sh full

Обратите внимание, что я также поддерживаю свой crontab и список установленных программ, в конечном итоге я переместлю это в другой скрипт, который также будет делать такие вещи, как

1) резервное копирование моих закладок из хрома и firefox

2) резервная почта в недвоичном формате

Текущий формат cron выполняет инкрементную резервную копию каждую ночь и полная резервная копия каждую пятницу.

Драйвер скрипта

Это обертывает вызов двуличности и приобретает необходимый экологический переменные. Дублистика сама по себе может быть волосатой со всеми переключателями командной строки и даже больше бремени, если у вас несколько целей. У меня избыточные резервные копии, сначала на локальный сервер и на удаленный сервис, предоставляемый rsync.net (отличный клиент поддержка!). Я нашел horcrux , чтобы быть прекрасной, легкой, оберточной оберткой в ​​соответствии с моими потребностями.

Драйвер драйвера, который является внешним по отношению к моему пути резервного копирования, также содержит мою кодовую фразу GPG для шифрования моих резервных копий. В конце концов, я хочу перейти к системе с управляемой смарт-картой [здесь] ( Ссылка )

[/ USR / местные / бен / ppetraki-backup.sh]

#!/bin/bash

export PATH=$PATH:/usr/local/bin
action=

export USER=XXX
export HOME=/home/$USER

source $HOME/.backenvrc

echo "verifying environment"
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 ]; then
  echo "requires an action!"
  exit 1
fi

export PASSPHRASE=

[ -z $PASSPHRASE ] && exit 1

echo "begin"

for config in local_backup remote_backup
do
  horcrux clean   $config
  horcrux $action $config
done

Использование horcrux для дублирования двуличия

Horcrux имеет представление о профилях, которые несут всю сложность управления дубликат CLI. Вот пример профиля.

cat /home/ppetraki/.horcrux/local_backup-config
destination_path="rsync://192.168.1.XXX/backups/personal"
 cat ~/.horcrux/local_backup-exclude
- /home/ppetraki/Sandbox
- /home/ppetraki/Bugs
- /home/ppetraki/Downloads
- /home/ppetraki/Videos
- /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]ache*

Мне было сложно создавать резервные копии только подкаталогов таких вещей, как mozilla и google-chrome, вместо этого я напишу дополнительный скрипт для выбора вишни эти файлы для резервного копирования.

Основной файл конфигурации horcrux

cat ~/.horcrux/horcrux.conf 
source="/home/ppetraki/"          # Ensure trailing slash
encrypt_key=XXXXXX     # Public key ID to encrypt backups with
sign_key='-'             # Key ID to sign backups with (leave as '-' for no signing)

use_agent=false          # Use gpg-agent?
remove_n=3               # Number of full filesets to remove
verbosity=5              # Logs all the file changes (see duplicity man page)
vol_size=25              # Split the backup into 25MB volumes
full_if_old=30D         # Cause 'full' operation to perform a full
                         # backup if older than 360 days
backup_basename='backup' # Directory name for local backups (i.e., destination
                         # /Volumes/my_drive/backup/ or /media/my_drive/backup/)
dup_params='--use-agent' # Parameters to pass to Duplicity

Это замечательно, так как это уменьшает вызов резервного копирования:

 $ horcrux inc local_backup 

Мониторинг

Я определил MAILTO в своем crontab, а также установил mutt и переконфигурировал postfix для локальной доставки почты. Каждую ночь я получаю отчет о том, как выполнялись резервные копии.

Заключение

Я потратил немало времени на определение того, как автоматизировать это и предоставить сильное шифрование. Надеюсь, вы сочтете это полезным.

    
ответ дан ppetraki 18.06.2013 в 17:43
0

Вы можете использовать duplicity-automate ( Ссылка ).

Он поддерживает хороший синтаксис XML и имеет некоторые обработчики для создания дампов db 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>

и все!

    
ответ дан mspanc 05.02.2014 в 12:25