it-swarm.com.de

Automatisieren von Duplizitätssicherungen mit cron

Wie automatisiere ich Duplizitäts-Backups mit cron unter Verwendung der GPG-Verschlüsselung und des SSH-Backends?

6
ppetraki

Hintergrund

Originalverweis: http://peterpetrakis.blogspot.com/2013/06/automating-and-encrypting-duplicity.html

Nachdem Sie in der Vergangenheit Daten verloren haben und Speicherplatz gehackt haben, empfiehlt es sich, regelmäßig Sicherungskopien zu erstellen. Ich wollte Redundanz für den Fall, dass mein lokaler Server ausfällt, und ich wollte meine Backups mit einem passwortgeschützten GPG-Schlüssel verschlüsseln.

Die aktuelle Lösung verwendet eine Passphrase, die im Klartext außerhalb des Sicherungspfads gespeichert wird. Ich plane zu untersuchen, ob der gpg-Schlüssel auf eine Smartcard verschoben und stattdessen mit einem PIN-Schlüssel entsperrt werden kann. Wenn jemand zusätzliche Lösungen hat, beschreiben Sie diese bitte ausführlich.

Bestehende erforderliche Umgebungsvariablen

Wenn Sie etwas von cron ausführen, wird es von Ihrer aktuellen Umgebung getrennt, und Sie verlieren alle Variablen, die Dinge wie Ihren ssh-agent gpg-agent beschreiben, Dinge, die Sie benötigen, um mit dem Remote-Server zu kommunizieren.

Ich habe einen einfachen Ansatz gewählt und in meinem ~ .bashrc folgendes erstellt.

cat> ~/.backenvrc << EOF 
 #, das vom crontab-Sicherungsskript verwendet wird 
 export SSH_AGENT_PID = $ SSH_AGENT_PID 
 export SSH_AUTH_SOCK = $ SSH_AUTH_SOCK 
 export GPG_AGENT_INFO 
 export GPGKEY = XXX-füge-deinen-gpg-Schlüssel-hier-XXX ein 
 EOF 

und geben Sie dies einfach über das Sicherungsskript ein, auf das in meiner crontab verwiesen wird. Ich muss mich nur einmal anmelden, um diese Datei zu füllen.

Crontab aufstellen

 # crontab -l 
 # mh dom mon dow Befehl 
 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/installierte-Software 
 0 0 * * * /usr/local/bin/ppetraki-backup.sh inc 
 0 0 * * Fri/usr/local/bin/ppetraki-backup. sh full 

Beachten Sie, dass ich auch meine crontab und meine Liste der installierten Software sichern werde. Irgendwann werde ich dies in ein anderes Skript verschieben, das auch Dinge wie erledigt

1) sichern Sie meine Lesezeichen von chrome und Firefox

2) Backup-Mail in einem nicht-binären Format

Das aktuelle Cron-Format führt jede Nacht ein inkrementelles Backup und jeden Freitag ein vollständiges Backup durch.

Treiberskript

Dies schließt den Aufruf der Duplizität ein und erfasst die erforderlichen Umgebungsvariablen. Die Duplizität selbst kann bei allen Befehlszeilenschaltern haarig sein und noch mehr zur Belastung werden, wenn Sie mehrere Ziele haben. Ich habe redundante Backups, zunächst auf einen lokalen Server und auf einen von rsync.net bereitgestellten Remote-Service (großartige Kundenunterstützung!). Ich fand horcrux eine wundervolle, leichte Hülle, die meinen Bedürfnissen entspricht.

Das Treiberskript, das sich außerhalb meines Sicherungspfads befindet, enthält auch meine GPG-Passphrase zum Verschlüsseln meiner Sicherungen. Irgendwann möchte ich auf ein Smartcard-gesteuertes System umsteigen [hier abgebildet] ( 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 "Überprüfung der Umgebung" 
 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]; dann 
 echo "erfordert eine Aktion!" 
 exit 1 
 fi 
 
 export PASSPHRASE = 
 
 [ -z $ PASSPHRASE] && exit 1 
 
 echo "begin" 
 
 für config in local_backup remote_backup 
 do 
 horcrux clean $ config 
 horcrux $ action $ config 
 done 

Mit Horkrux gegen Duplizität

Horcrux hat die Vorstellung von Profilen, die die Verwaltung der Duplicity-CLI erheblich vereinfachen. Hier ist ein Beispiel für ein 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/Downloads 
 - /home/ppetraki/Videos[.____.‹- /home/ppetraki/.xsession-errreas.____.‹- /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

Ich fand es problematisch, nur Unterverzeichnisse von Dingen wie Mozilla und Google Chrome zu sichern. Stattdessen schreibe ich ein zusätzliches Skript, um diese Dateien für die Sicherung auszuwählen.

Die Hauptkonfigurationsdatei von horcrux

 cat ~/.horcrux/horcrux.conf 
 source = "/ home/ppetraki /" # Achten Sie auf einen abschließenden Schrägstrich 
 encrypt_key = XXXXXX # ID des öffentlichen Schlüssels zum Verschlüsseln von Sicherungen mit 
 sign_key = '-' # Schlüssel-ID zum Signieren von Backups mit (belassen als '-' für kein Signieren) 
 
 use_agent = false # gpg-agent verwenden? 
 remove_n = 3 # Anzahl der zu entfernenden vollständigen Dateigruppen 
 Verbosity = 5 # Protokolliert alle Dateiänderungen (siehe Manpage zur Duplizität) 
 Vol_size = 25 # Teilen Sie das Backup in 25-MB-Volumes 
 Full_if_old auf = 30D # Veranlasst die Ausführung einer vollständigen 
 # Sicherung, wenn sie älter als 360 Tage ist. 
 Backup_basename = 'backup' # Verzeichnisname für lokale Sicherungen (dh Ziel 
 #/Volumes/my_drive/backup/oder /media/my_drive/backup/)[.____.)dup_params='--use-agent '# Parameter, die an Duplicity übergeben werden sollen 

Das ist großartig, da es einen Backup-Aufruf auf folgendes reduziert:

 $ horcrux inc local_backup 

Überwachung

Ich habe MAILTO in meinem crontab definiert und auch mutt und das neu konfigurierte Postfix für die lokale Mailzustellung installiert. Jede Nacht bekomme ich einen Fortschrittsbericht darüber, wie die Backups liefen.

Fazit

Ich habe ziemlich viel Zeit damit verbracht, zu bestimmen, wie dies automatisiert und eine starke Verschlüsselung bereitgestellt werden soll. Ich hoffe, Sie finden das nützlich.

6
ppetraki

Sie können duplicity-automate ( http://duplicity-auto.sf.net/ ) verwenden.

Es unterstützt Nice XML-Syntax und hat einige Handler zum Erstellen von MySQL/PostgreSQL-Datenbank-Dumps.

Definieren Sie einfach zwei Dateien wie:

<?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>

und

<?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>

und das ist es!

0
mspanc