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:
- Mit dem Kommando
$ ssh-keygen
erzeugen Sie Schlüssel ohne eine Passphrase. Die Schlüssel liegen im Unterverzeichnis .ssh des aktuellen Benutzers. - Den Inhalt der Datei zeigen Sie mit dem Kommando
$ cat .ssh/id_rsa.pub
an und kopieren ihn in die Zwischenablage.
Auf dem NAS:
- Mit dem Kommando
$ ssh admin@<IP-Adresse>
melden Sie sich auf dem NAS an. - Die Datei /etc/config/ssh/authorized_keys muss anschließend um den Eintrag aus dem Zwischenspeicher erweitert werden.
- 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/