goldstift's 2 cent on technology and software development

Navigation

Praxistipps zu ftplicity

Ich nutze seit geraumer Zeit "ftplicity" für das Backup meiner Server auf einen FTP-Backupserver. In diversen Artikeln u.a. bei heise.de ("Hinter Schloss und Siegel") wird genau beschrieben, wie man so ein Backup auch verschlüsselt für einen nicht vertrauenswürdigen Backupserver einrichtet.
Mein Backup wird durch die folgenden crontab-Einträge gesteuert:

# run the (incremental) backup each night at 05:11h
11 5 * * 1-6 /usr/local/bin/ftplicity backup &> /var/log/ftplicity_incremental.log
25 5 * * 1-6 /root/bin/checkBackupSize.sh | mail -s "ftplicity backup status" MY@MAIL.de
# do a full backup every sunday & delete old backups
45 3 * * 0 /usr/local/bin/ftplicity full &> /var/log/ftplicity_full.log
35 4 * * 0 /usr/local/bin/ftplicity purge --force &>> /var/log/ftplicity_full.log
25 5 * * 0 mail -s "ftplicity_full.log" MY@MAIL.de < /var/log/ftplicity_full.log
Über die Zeit habe ich aber gemerkt, dass eine Punkte nicht beschrieben sind.

Wie kann ich mir den belegten Backupspeicher ansehen?

Um den Hintergrund dieser Frage besser einschätzen zu können, muss man wissen, dass
  1. die meisten Backupserver eine Quota für die Benutzer einrichten
  2. zum Löschen einer Datei via FTP der gleiche Platz auf dem Server/ der Quota frei sein muss, wie die Datei bereits belegt
Vor diesem Hintergrund bedeutet dies, dass man eine 10MB große Datei nicht löschen kann, wenn in der Quota nur noch 9MB frei sind! Aus diesem Grund kann es passieren, dass man obsolete Backups nach erfolgreichem Fullbackup nicht mehr löschen kann, wenn nicht genauso viel Speicher in der Quota frei ist, wie gelöscht werden soll. Zur Anzeige des belegten Speichers auf dem entfernten FTP-Server verwende ich als Workaround folgendes Perl-Skript:
#!/bin/sh 
# Location: /root/bin/checkBackupSize.sh
# Prints the size of all files on the remote FTP server to STDOUT

ftp -n u30754.your-backup.de <<EOT | perl -ne '$_=~/u30754 u30754 (\d+) /; $cnt=$cnt+$1; print $cnt."\n"' | tail -n 1 | perl -ne 'print "Current size of backup is " . $_/1024/1024 . " MB\n"'
user u30754 A0Lr7NEIvEeFxMDw
dir
quit
EOT

Wie funktioniert der Parameter "HOECHSTALTER"?

Dieser Parameter soll eigentlich das Alter der ältesten Datei markieren. Bei einem Aufruf von "ftplicity purge" wird dementsprechend versucht alle Dateien zu löschen, die älter als 7 Tage sind. Full-Backups können allerdings nur gelöscht werden, wenn es keine inkrementellen Backups mehr gibt, die von ihnen abhängen.

Stellt man in der "~/.ftplicity/conf" das "HOECHSTALTER=7D", ruft aber nur alle 14 Tage ein "ftplicity full" auf, so werden auf dem Backup-Server die Dateien der inkrementellen Backups der letzten 14 Tage nicht löschbar sein!

Dies sollte vor allem in Zusammenhang mit o.g. Tipp bzgl. "belegter Backupspeicher" beachtet werden.

My next Conferences