Ack der III
Ensign
- Registriert
- Mai 2008
- Beiträge
- 236
@Snakeeater Unter /media/storage ist das BTRFS-Dateisystem gemounted. Darunter wird dann einmal das Subvolume /media/storage/data und ein reguläres Verzeichnis /media/storage/snapshots erstellt. In diesem Verzeichnis werden die Snapshots des Subvolumes angelegt. Dieses Verzeichnis muss sich innerhalb des selben BTRFS-Dateisystems befinden wie das Subvolume, von dem Snapshots angelegt werden sollen. Sonst funktioniert es nicht.
BTRFS-Send und -Receive sind getrennt, weil man dadurch flexibler ist. So kann man z.B. den Snapshot in eine Datei umleiten:
Und diese Datei dann zu einem anderen Zeitpunkt einspielen:
Es ist aber auch üblich das sich Quelle und Ziel auf verschiedenen Rechnern befinden:
-p /media/storage/snapshots/snapshot-1 ist der Ausgangssnapshot (Parent), welcher sich auch bereits im Ziel /media/backup befinden muss und /media/storage/snapshots/snapshot-2 ist der Name des vorher neu angelegten Snapshots. btrfs send überträgt nun nur die Änderungen, die seit Erstellung von /media/storage/snapshots/snapshot-1 in /media/storage/snapshots/snapshot-2 erfolgt sind.
Hier nochmal der komplette Ablauf:
Auf der Backupplatte befinden sich jetzt snapshot-1 mit allen seinen Dateien und snapshot-2, welcher alle Dateien von snapshot-1 plus alle Änderungen seit dem beinhaltet, wobei die gemeinsamen Dateien von snapshot-1 und snapshot-2, welche sich nicht geändert haben, nur einmal auf der Platte vorhanden sind und entsprechend transparent referenziert werden.
BTRFS-Send und -Receive sind getrennt, weil man dadurch flexibler ist. So kann man z.B. den Snapshot in eine Datei umleiten:
Bash:
btrfs send /media/storage/snapshots/snapshot-1 > snapshot-1.backup
Und diese Datei dann zu einem anderen Zeitpunkt einspielen:
Bash:
cat snapshot-1.backup | btrfs receive /media/backup
Es ist aber auch üblich das sich Quelle und Ziel auf verschiedenen Rechnern befinden:
Bash:
btrfs send /media/storage/snapshots/snapshot-1 | ssh user@server "btrfs receive /media/backup"
-p /media/storage/snapshots/snapshot-1 ist der Ausgangssnapshot (Parent), welcher sich auch bereits im Ziel /media/backup befinden muss und /media/storage/snapshots/snapshot-2 ist der Name des vorher neu angelegten Snapshots. btrfs send überträgt nun nur die Änderungen, die seit Erstellung von /media/storage/snapshots/snapshot-1 in /media/storage/snapshots/snapshot-2 erfolgt sind.
Hier nochmal der komplette Ablauf:
Bash:
# Anlegen von snapshot-1 des Subvolumes /media/storage/data:
btrfs subvolume snapshot -r /media/storage/data /media/storage/snapshots/snapshot-1
# Übertragen von snapshot-1 auf die Backupplatte:
btrfs send /media/storage/snapshots/snapshot-1 | btrfs receive /media/backup
# Anlegen von snapshot-2 des Subvolumes /media/storage/data:
btrfs subvolume snapshot -r /media/storage/data /media/storage/snapshots/snapshot-2
# Übertragen von snapshot-2 auf die Backupplatte, wobei nur die Änderungen seit snapshot-1 übertragen werden:
btrfs send -p /media/storage/snapshots/snapshot-1 /media/storage/snapshots/snapshot-2 | btrfs receive /media/backup
Auf der Backupplatte befinden sich jetzt snapshot-1 mit allen seinen Dateien und snapshot-2, welcher alle Dateien von snapshot-1 plus alle Änderungen seit dem beinhaltet, wobei die gemeinsamen Dateien von snapshot-1 und snapshot-2, welche sich nicht geändert haben, nur einmal auf der Platte vorhanden sind und entsprechend transparent referenziert werden.