Comment automatiser les sauvegardes de duplicité à l'aide de cron en utilisant le cryptage gpg et le backend ssh?
Référence originale: http://peterpetrakis.blogspot.com/2013/06/automating-and-encrypting-duplicity.html
Après avoir subi des pertes de données et du piratage informatique sur le stockage, il est conseillé de procéder à des sauvegardes régulières. Je voulais la redondance en cas de panne de mon serveur local et je voulais chiffrer mes sauvegardes à l'aide d'une clé gpg protégée par mot de passe.
La solution actuelle utilise une phrase secrète conservée en texte brut en dehors du chemin de sauvegarde. Je prévois d’envisager de déplacer la clé gpg vers une carte à puce et d’utiliser une clé pour le déverrouiller. Si quelqu'un a des solutions supplémentaires, veuillez les décrire en détail.
Exécuter quoi que ce soit à partir de cron le détache de votre environnement actuel, vous perdez toutes les variables décrivant des éléments tels que votre agent spg-agent gpg, ce dont vous avez besoin pour commencer à communiquer avec le serveur distant.
J'ai adopté une approche simple, dans mon ~ .bashrc, j'ai créé ce qui suit.
cat> ~/.backenvrc << EOF # utilisé par le script de sauvegarde crontab exportation SSH_AGENT_PID = $ SSH_AGENT_PID exportation SSH_AUTH_SOCK = $ SSH_AUTH_SOCK exportation GPG_AGENT_INF. export GPGKEY = XXX-insérer-votre-clé-gpg-ici-XXX EOF
et sourcez simplement ceci à partir du script de sauvegarde référencé dans ma crontab, il suffit simplement de vous connecter une fois pour peupler ce fichier.
# crontab -l # mh commande mon dow commande MAILTO = ppetraki @ localhost BACKUP =/home/ppetraki/Documents/System/Backup # 0 0 * * */usr/bin/crontab -l> $ SAUVEGARDE/crontab-backup 0 0 * * */usr/bin/dpkg --get-selections> $ SAUVEGARDE/logiciel installé 0 0 * * * /usr/local/bin/ppetraki-backup.sh inc 0 0 * * ven/usr/local/bin/ppetraki-backup. sh complet
Notez que je sauvegarde également ma crontab et ma liste de logiciels installés. Je vais éventuellement transférer ceci dans un autre script qui effectue également des opérations telles que
1) sauvegarder mes favoris de chrome et de firefox
2) sauvegarde du courrier dans un format non binaire
Le format cron actuel effectue une sauvegarde incrémentielle chaque nuit et une sauvegarde complète chaque vendredi.
Ceci enveloppe l'invocation de duplicité et acquiert les variables d'environnement nécessaires. La duplicité elle-même peut être complexe avec tous les commutateurs de ligne de commande et même un fardeau supplémentaire si vous avez plusieurs cibles. J'ai des sauvegardes redondantes, d'abord sur un serveur local et sur un service distant fourni par rsync.net (excellent support client!). J'ai trouvé que horcrux était un wrapper de duplicité merveilleux, léger et adapté à mes besoins.
Le script de pilote, qui est externe à mon chemin de sauvegarde, contient également mon mot de passe GPG pour chiffrer mes sauvegardes. Finalement, je souhaite passer à un système piloté par carte à puce [illustré ici] ( http://blog.josefsson.org/2011/10/11/unattended-ssh-with-smartcard/ )
[/usr/local/bin/ppetraki-backup.sh]
#!/bin/bash export PATH = $ PATH:/usr/local/bin action = 1 $ export USER = XXX export HOME =/home/$ USER source $ HOME/.backenvrc echo "vérification de l'environnement" echo "gpg-agent: $ {GPG_AGENT_INFO}" echo "clé gpg: $ {GPGKEY}" echo "ssh-agent-pid: $ {SSH_AGENT_PID}" echo "ssh-auth-sock: $ {SSH_AUTH_SOCK}" if [-z $ action]; alors écho "nécessite une action!" sortie 1 fi export PASSPHRASE = [ -z $ PASSPHRASE] && exit 1 echo "begin" pour la configuration dans local_backup remote_backup faire horcrux clean $ config horcrux $ action $ config terminé
Horcrux a la notion de profils qui simplifie grandement la gestion de la CLI pour la duplicité. Voici un exemple de profil.
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/Téléchargements - /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/**[cCHERRachache* ......]
Je trouvais problématique de ne sauvegarder que les sous-répertoires d'éléments tels que mozilla et google-chrome. J'écrirai plutôt un script supplémentaire pour sélectionner ces fichiers à sauvegarder.
Le fichier de configuration principal d'horcrux
cat ~/.horcrux/horcrux.conf source = "/ home/ppetraki /" # Assurer la fin de la barre oblique encrypt_key = XXXXXX # ID de clé publique permettant de chiffrer les sauvegardes avec sign_key = '-' # ID clé pour signer les sauvegardes avec (laisser comme '-' pour ne pas signer) use_agent = false # Utilisez gpg-agent? remove_n = 3 # Nombre de groupes de fichiers complets à supprimer Verbosity = 5 # Journalise toutes les modifications de fichiers (voir la page de manuel relative à la duplicité) Vol_size = 25 # Divise la sauvegarde en volumes de 25 Mo Full_if_old = 30D # Permet à une opération 'complète' d'effectuer une sauvegarde complète de # Si elle a plus de 360 jours Backup_basename = 'backup' # Nom du répertoire pour les sauvegardes locales (c'est-à-dire, la destination #/Volumes/my_drive/backup/ou /media/my_drive/backup/) dup_params='--use-agent '# Paramètres à transmettre à Duplicity
C'est génial car cela réduit un appel de sauvegarde à ceci:
$ horcrux inc local_backup
J'ai défini MAILTO dans ma crontab et également installé mutt et le suffixe reconfiguré pour la distribution du courrier local. Chaque nuit, je reçois un rapport d'avancement sur le déroulement des sauvegardes.
J'ai passé pas mal de temps à déterminer comment automatiser cela et à fournir un cryptage renforcé. J'espère que vous trouvez ça utile.
Vous pouvez utiliser duplicity-automatate ( http://duplicity-auto.sf.net/ ).
Il supporte la syntaxe Nice XML et a quelques gestionnaires pour créer des dumps db MySQL/PostgreSQL.
Il suffit de définir deux fichiers comme:
<?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>
et
<?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>
et c'est tout!