Logo

Verschlüsselte verteilte Backups mit AES und FTP

Während meiner Diplomarbeit kam die Notwendigkeit auf, jeden Abend das Geleistete würdig zu sichern. Also nette Leute nach einen FTP-Account gefragt und ein kleines Skript geschrieben, das verpackt, verschlüsselt und hochlädt. Außerdem wird ein lokales Backup erzeugt.
Erstmal ein paar Variablen definieren:
NAME=backup`date +%Y%m%d`.tbz.aes
DIRTOBACKUP=/important

MOUNTPOINT=/mnt/some_backup_drive

USER='backupuser'
PASSWD='mostsecret'
HOST='ftp.backupservicestation.com'
REMOTEDIR=backup
Nun schnüren wir ein verschlüsseltes Päckchen,
tar cj $DIRTOBACKUP | aes -e -p my_top_secret_password -o $NAME
kopieren es lokal,
echo copying to local
if mount | grep $MOUNTPOINT >/dev/null 2>&1
then
  cp $NAME $MOUNTPOINT
else
  echo $MOUNTPOINT not mounted
fi
und via ftp.
if ping -c 1 -w 2 $HOST >/dev/null 2>&1
then
  ftp -p -n $HOST <<SCRIPT
  user $USER $PASSWD
  binary
  cd $REMOTEDIR
  put $NAME
  quit
SCRIPT
else
  echo $HOST not online
fi
Für jene unter euch, die here-documents noch nicht kennen: Ein <<KEYWORD Bedeutet, dass die nächsten Zeilen via stdin an den Befehl davor geschickt werden. Und zwar geschieht das so lange bis KEYWORD im Skript erscheint. KEYWORD muss dabei am Zeilenanfang stehen. Mehr Infos dazu finden sich mittels eines beherzten
man bash
.
Das war's schon. Einfach an die eigenen Gegebenheitanpassen und zurücklehnen.
Vielleicht ein Hinweis noch: Da das Skript das Passwort der FTP-Seite kennen muss, sollte es nicht für jedermann einsehbar sein.
Oh, und bevor ich's vergesse. Entpacken geht natürlich auch, und zwar mittels folgender magischer Formel:
aes -d -p my_top_secret_password -f backup.tbz.aes | tar xj
Das kleine Programm namens aes findet sich hier.