Backup mit Linux

Linux Backup

Vorraussetzung für SIcherung und Wiederherstellung ist, dass die Server der Universität vom zu sichernden Gerät per ssh erreichbar sind.

Im Beispiel soll ein einfaches Backup auf dem Server backup.zfn.uni-bremen.de mit dem User testuser gezeigt werden.

  • Bitte tauschen Sie "testuser" durch Ihren Uni-Account aus. Ein neuer Funktionsaccount wäre noch besser.
  • Das Passwort  Abc!123  darf nicht verwendet werden, weil ich es hier publiziert habe.
  • Wenn Sie Ihre Backups auch auf backup.zfn.uni-bremen.de ablegen wollen, dann schreiben Sie uns an eine unserer Funktionsadressen unten.
  • Testen Sie das Backup und den Restore mehrfach!

Vorbereitung

Bitte installieren Sie sshfs, ssh, rsync und cryfs:

# apt install shfs openssh-client cryfs rsync

Nun erstellen Sie einen ssh key:

# ssh-keygen

Kopieren Sie nun den public-Teil des Key auf den Server:

# ssh-copy-id testuser@backup.zfn.uni-bremen.de

Nun fehlen noch ein paar Ordner.

# mkdir /home/testuser/cryfsbackup/
# ssh testuser@backup.zfn.uni-bremen.de mkdir /home/testuser/cryfsbackup

Nun testen Sie, ob sich der Ordner von backup.zfn.uni-bremen.de hier mounten lässt:

# sshfs testuser@backup.zfn.uni-bremen.de:/home/testuser/cryfsbackup/ /home/testuser/cryfsbackup/

Der Ordner sollte nun zu sehen sein:

# df

Nun erstellen Sie einen Verschlüsselten Ordner mit dem Passwort "Abc!123" :

# cryfs /home/testuser/cryfsbackup /home/testuser/mybackup

Dieses kann einen Moment dauern. Wenn auf dem Server backup.zfn.uni-bremen.de in dem Ordner /home/testuser/cryfsbackup/  viele kleine Ordner entstanden sind, ist das ein gutes Zeichen. Die Verschlüsselung des Ordners /home/testuser/mybackup benötigt später nur 10% zusätzlichen Platz. Hacker können aber ohne das zusätzliche Passwort diese Dateien nicht auslesen oder verändern.

Backup

Bitte erstellen Sie ein Backupskript mit folgenden Inhalt. Achten Sie darauf, testuser und Abc!123 gegen Ihren Account und ein sinnvolles Passwort zu ersetzen.

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# Test ob Job schon läuft

df | egrep "cryfsbackup|mybackup" &&  { echo "Läuft schon" 1>&2 ; exit 1; }

# Backup.zfn.uni-bremen.de mounten
sshfs testuser@backup.zfn.uni-bremen.de:/home/testuser/cryfsbackup/ /home/testuser/cryfsbackup/

# Verschlüsselung des Ordners starten
CRYFS_FRONTEND=noninteractive
mkdir -p /home/testuser/mybackup/
echo Abc!123 | cryfs /home/testuser/cryfsbackup /home/testuser/mybackup

# Produktive Dateien mit dem Backup synchronisieren
rsync -av -delete /home/testuser/Dokumente  /home/testuser/mybackup/

# Und alles wieder beenden
sync
cryfs-unmount "/home/testuser/mybackup"
sync
umount /home/testuser/cryfsbackup/

Restore

Das zurückholen der Dateien unterscheidet sich nur durch die Reihenfolge beim rsync. Um unbekannte Dateien nicht zu löschen fehlt das delete. Bitte erstellen Sie folgendes Skript:

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# Test ob Job schon läuft

df | egrep "cryfsbackup|mybackup" &&  { echo "Läuft schon" 1>&2 ; exit 1; }

# Backup.zfn.uni-bremen.de mounten
sshfs testuser@backup.zfn.uni-bremen.de:/home/testuser/cryfsbackup/ /home/testuser/cryfsbackup/

# Verschlüsselung des Ordners starten
CRYFS_FRONTEND=noninteractive
echo Abc!123 | cryfs /home/testuser/cryfsbackup /home/testuser/mybackup

# Produktive Dateien mit dem Backup synchronisieren
rsync -av /home/testuser/mybackup/Dokumente /home/testuser/

# Und alles wieder beenden
sync
cryfs-unmount "/home/testuser/mybackup"
sync
umount /home/testuser/cryfsbackup/

Variationen

Sieben Sicherungen, die nach sieben Tagen überschrieben werden:

heute=`date +%a`
mkdir -p /home/testuser/mybackup/$heute
rsync -av -delete /home/testuser/Dokumente  /home/testuser/mybackup/$heute

Logfile mit Zusammenfassung:

date >> /var/log/backup.log
find /home/testuser/mybackup/  | wc -l >> /var/log/backup.log

Quellen

https://www.cryfs.org/howitworks

https://wiki.ubuntuusers.de/FUSE/sshfs/

https://wiki.ubuntuusers.de/rsync/