Hetzner - DokuWiki

Duplicity Script

Dieses HowTo ist fuer duplicity 0.4.11 .

Hinweis: Dieses Script funktioniert nur, wenn man mit dem Backup am 01. eines Monats anfängt, oder zuerst manuell ein "Full Backup" erstellt

Nach der erfolgreichen installation von duplicity, wollen wir 2 monate lang einen taeglichen backup haben. Dazu, jeden ersten des monats soll ein voller backup erstellt werden.

In meinem fall, hab ich ein separates backup fuer /etc /home /srv [ was bei mir die meisten daten hat], und / .


So, das geht ganz einfach:

Erstellen wir mal ein file was /usr/sbin/duplicity.sh heisst. Sie muessen dan noch die informationen wie das ftp kennwort, den gpg passphrase den sie benutzen wollen, den ftp benutzername und den host, austauschen. Da kommt folgendes rein:

#!/bin/sh
#
# Script created on 17-6-2008
#
# This script was created to make Duplicity backups.
# Full backups are made on the 1st day of each month.
# Then incremental backups are made on the other days.
#

# Loading the day of the month in a variable.
date=`date +%d`



 # Setting the pass phrase to encrypt the backup files. Will use symmetrical keys in this case.
PASSPHRASE='yoursecretgpgpassphrase'
export PASSPHRASE

# Setting the password for the FTP account that the
# backup files will be transferred to.
FTP_PASSWORD='yourftppass'
export FTP_PASSWORD

# Check to see if we're at the first of the month.
# If we are on the 1st day of the month, then run
# a full backup. If not, then run an incremental
# backup.
if [ $date = 01 ]
then

 duplicity remove-older-than 2M -v5 ftp://user@host/srv >>/var/log/duplicity/srv.log
 duplicity remove-older-than 2M -v5 ftp://user@host/etc >>/var/log/duplicity/etc.log
 duplicity remove-older-than 2M -v5 ftp://user@host/home >>/var/log/duplicity/home.log
 duplicity remove-older-than 2M -v5 ftp://user@host/system >>/var/log/duplicity/system.log


 duplicity full -v5 /srv ftp://user@host/srv >>/var/log/duplicity/srv.log
 duplicity full -v5 /etc ftp://user@host/etc >>/var/log/duplicity/etc.log
 duplicity full -v5 /home ftp://user@host/home >>/var/log/duplicity/home.log
 duplicity full -v5 --exclude-filelist /etc/duplicityfilelist.conf / ftp://user@host/system >>/var/log/duplicity/system.log

else

 duplicity remove-older-than 2M -v5 ftp://user@host/srv >>/var/log/duplicity/srv.log
 duplicity remove-older-than 2M -v5 ftp://user@host/etc >>/var/log/duplicity/etc.log
 duplicity remove-older-than 2M -v5 ftp://user@host/home >>/var/log/duplicity/home.log
 duplicity remove-older-than 2M -v5 ftp://user@host/system >>/var/log/duplicity/system.log

 duplicity incremental -v5 /srv ftp://user@host/srv >>/var/log/duplicity/srv.log
 duplicity incremental -v5 /etc ftp://user@host/etc >>/var/log/duplicity/etc.log
 duplicity incremental -v5 /home ftp://user@host/home >>/var/log/duplicity/home.log
 duplicity incremental -v5 --exclude-filelist /etc/duplicityfilelist.conf / ftp://user@host/system >>/var/log/duplicity/system.log

fi
 # Check http://www.nongnu.org/duplicity/duplicity.1.html
 # for all the options available for Duplicity.
 # Unsetting the confidential variables so they are
 # gone for sure.
 unset PASSPHRASE
 unset FTP_PASSWORD

 exit 0

Dateien oder Verzeichnisse, die nicht gesichert werden sollen, werden in der Datei /etc/duplicityfilelist.conf eingetragen, die im Skript per exclude-filelist an duplicity übergeben wird. Diese könnte z.B. folgenden Inhalt haben:

- /dev
- /proc
- /sys
- /tmp
- /etc
- /home
- /srv
- /var/cache

Für eine regelmäßig Ausführung wird ein Cronjob benötigt. Dazu kann das Skript entweder unter /etc/cron.daily (täglich), /etc/cron.weekly (wöchentlich) oder /etc/cron.monthly (monatlich) abgelegt werden. Für eine genaue Einstellung des Zeitpunkts kann auch eine Crontab verwendet werden. Hierfür wird eine Datei unter /etc/cron.d/ erstellt:

# /etc/cron.d/duplicity
0 0 * * * root /usr/sbin/duplicity.sh >/dev/null 2>&1


Ursprüngliche Version von sethx im Hetznerforum veröffentlicht.



© 2020. Hetzner Online GmbH. Alle Rechte vorbehalten.