rsync

Mit rsync kann ein Raspberry Pi sehr einfach gesichert werden. Dafür bedarf es eigentlich nicht zwingend eines btrfs-Filesystems. Mit Hilfe eines Snapshots kann jedoch ein konsistenter Zustand des Dateisystemes herbeigeführt und gesichert werden. Als Backup-Ziel bietet sich idealerweise ein NAS an.

Backup

Das kleine rsync-Script verwende ich regelmäßig. Es erzeugt jeweils eine getrennte Sicherung für das boot- und für das root-Filesystem. Für das root-Filesystem wird ein Snapshot angelegt, welcher anschließend mit rsync gesichert wird. Nach der Sicherung wird der Snapshot entfernt.

rsync -aP --delete /boot/ user@nas:/backup-verzeichnis/pi/$(hostname)/rsync/boot
btrfs subvolume snapshot -r / /.snapshots/rsync_rootfs/
rsync -aP --delete /.snapshots/rsync_rootfs/ user@nas:/backup-verzeichnis/pi/$(hostname)/rsync/root
btrfs subvolume delete /.snapshots/rsync_rootfs/

Restore

Grundsätzlich ist dieser Umweg über ein anderes System nicht zwingend notwendig, aber ich bevorzuge diesen Umweg aus Gründen der Systemkonsistenz. Für den Restore wird eine bootfähige SD-Karte (z. B. mit Raspbian) benötigt. Wer sich auskennt, kann den Master-Boot-Record, die Partitionstabelle und die Filesysteme der boot- und root-Partitionen natürlich auch von Hand anlegen. In meinem Beispiel ist die boot-Partition nach /mnt/boot und die root-Partition nach /mnt/root gemountet.

$ sudo rsync -aP admin@nas:/share/MD0_DATA/backup/pi/fhem/rsync/boot /mnt/boot
$ sudo rsync -aP admin@nas:/share/MD0_DATA/backup/pi/fhem/rsync/root /mnt/root

Bitte nicht vergessen, dass die Sub-Volumes (z. B. /.snapshots für den snapper) von Hand wieder angelegt werden müssen!

Passwortloses Backup

Nach einem Schlüsselaustausch kann auf die Eingabe des Passwortes verzichtet werden, wozu folgende Schritte nötig sind:

Auf dem Raspberry Pi:

  1. Mit dem Kommando
    ssh-keygen
    erzeugen Sie Schlüssel ohne eine Passphrase. Die Schlüssel liegen im Unterverzeichnis .ssh des aktuellen Benutzers.
  2. Den Inhalt der Datei zeigen Sie mit dem Kommando
    cat .ssh/id_rsa.pub
    an und kopieren ihn in die Zwischenablage.

Auf dem NAS:

  1. Mit dem Kommando
    ssh admin@<IP-Adresse>
    melden Sie sich auf dem NAS an.
  2. Die Datei /etc/config/ssh/authorized_keys muss anschließend um den Eintrag aus dem Zwischenspeicher erweitert werden.
  3. Mit dem Kommando
    chmod 600 authorized_keys
    wird sichergestellt, dass die Datei die richtigen Rechte hat.

Von nun an funktioniert der rsync auch ohne Passworteingabe:

rsync -aP --delete -e '/usr/bin/ssh -i /home/pi/.ssh/id_rsa' /boot/ admin@nas:/backup-verzeichnis/pi/$(hostname)/rsync/boot
btrfs subvolume snapshot -r / /.snapshots/rsync_rootfs/
rsync -aP --delete -e '/usr/bin/ssh -i /home/pi/.ssh/id_rsa' /.snapshots/rsync_rootfs/ admin@nas:/backup-verzeichnis/pi/$(hostname)/rsync/root
btrfs subvolume delete /.snapshots/rsync_rootfs/

Previous page: snapper Next page: Lebensdauer der SD-Karten