Antecedentes
Referência original: link
Tendo sofrido perda de dados no passado e hackeado no armazenamento sugere que É uma boa ideia ter backups regulares. Eu queria redundância no caso do meu servidor local falhou e eu queria criptografar meus backups usando uma senha tecla gpg protegida.
A solução atual usa uma senha mantida em texto simples fora do caminho de backup. Eu pretendo investigar movendo a chave gpg para um cartão inteligente e usando uma chave de alfinete para desbloqueá-lo. Se alguém tiver alguma solução adicional por favor, descreva-os em detalhes.
Persistindo variáveis ambientais necessárias
Executar qualquer coisa do cron desconecta-o do seu ambiente atual, você perde todas as variáveis que descrevem coisas como o seu agente-gpg ssh, coisas que você precisa começar a se comunicar com o servidor remoto.
Eu tomei uma abordagem simples, no meu ~ .bashrc eu criei o seguinte.
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
e simplesmente fonte isto do script de backup referenciado no meu crontab, Eu apenas preciso apenas fazer o login uma vez para preencher este arquivo.
Configurando o Crontab
# crontab -l # m h dom mon dow command MAILTO=ppetraki@localhost 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
Note que também estou fazendo o backup do meu crontab e da minha lista de softwares instalados, Eventualmente eu vou mudar isso para outro script que também faz coisas como
1) faça backup dos meus favoritos do chrome e do firefox
2) correio de backup em formato não-binário
O formato cron atual executa um backup incremental a cada noite e um backup completo toda sexta-feira.
script de driver
Isto envolve a invocação da duplicidade e adquire o necessário variáveis. Duplicidade em si pode ser peludo com todos os switches de linha de comando e ainda mais um fardo se você tiver vários alvos. Tenho backups redundantes, primeiro para um servidor local e para um serviço remoto fornecido pelo rsync.net (excelente cliente Apoio, suporte!). Eu encontrei horcrux para ser um invólucro de duplicidade maravilhoso, leve, para atender às minhas necessidades.
O script do driver, que é externo ao meu caminho de backup, também contém minha senha GPG para criptografar meus backups. Eventualmente, gostaria de mudar para um sistema de cartão inteligente [ilustrado aqui] ( link )
[/ usr / local / bin / 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
Usando o horcrux para lidar com a duplicidade
O Horcrux tem a noção de perfis que eliminam toda a complexidade do gerenciamento a duplicidade CLI. Aqui está um exemplo de um perfil.
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*
Eu achei problemático fazer backup de apenas subdiretórios de coisas como o mozilla e google-chrome, em vez disso, vou escrever um script adicional para escolher esses arquivos para backup.
O arquivo de configuração horcrux principal
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
Isso é ótimo, pois reduz a invocação de backup para isso:
$ horcrux inc local_backup
Monitoramento
Eu defini MAILTO no meu crontab e também instalei o mutt e reconfigurei postfix para entrega de correio local. Toda noite recebo um relatório de progresso sobre como os backups foram executados.
Conclusão
Eu passei um bom tempo determinando como automatizar isso e fornecer criptografia strong. Espero que você ache isso útil.