ZFS: Übertragen von Snapshot von einem Remote-Server auf den lokalen Server und umgekehrt

Hin und wieder möchte man Snapshots von einem Remote-Server auf den lokalen Server übertragen. Ggf. wird der umgekehrte Weg von lokal zum Remote-Server übertragen.

Lokaler Server -> Remote Server

Übertragen des ersten Snaphots

 

zfs send -vc rpool/data/vm-100-disk-2@snap | ssh root@192.168.20.3 zfs recv backuppool/vm-100-disk-2

 

Übertragen der Differenzierungen

 

zfs send -vc -I rpool/data/vm-100-disk-2@snap[vorheriger] rpool/data/vm-100-disk-2@snap2[neuer] | ssh root@192.168.20.3 zfs recv -sdvF backuppool

 

Remote Server -> Lokaler Server

Übertragen des ersten Snaphots

 

ssh -l <user> 192.168.20.3 'sudo zfs send-vc rpool/data/vm-100-disk-2@snap' |  zfs recv backuppool/vm-100-disk-2

 

Übertragen der Differenzierungen

 

ssh -l <user> 192.168.20.3 'sudo zfs send -vc -I rpool/data/vm-100-disk-2@snap[vorheriger] rpool/data/vm-100-disk-2@snap2[neuer]' | zfs recv -sdvF backuppool

 

Weitere Optionen

KurzbezeichnungLangbezeichnungBeschreibung
zfs send  
-c--compressedKompression kann nur bei lz4 auf dem Remote und lokalen Dataset genutzt werden.
-v--verboseDetailierte Ausgabe, welche Datenmenge übertragen wurde
-I Übertragt alle Snapshots zwischen Quelle und Ziel.
-i Nur die Unterschiede zwischen exakt beiden Snapshots übertragen
-R--replicateÜbertragt alle Unterschiede zwischen den Snapshots (Werte vom Dataset). Es wird ein Replikationsstream generiert.
-t Hier kann bei einem abgerissenem Stream der Token vom Ziel-Dataset eingetragen werden.
-n Dry-Run
zfs recv  
-s 

Erstellt beim Empfangen eine Token auf dem Dataset (receive_resume_token)
Befehl: zfs get receive_resume_token <dataset>

-F Führt einen Rollback auf den letzten Snapshot zurück, auf dem verwiesen wird.
-d 

Ignoriert den ersten Abschnitt zum wie rpool oder backuppool

-v--verboseDetailierte Ausgabe, welche Datenmenge übertragen wurde

Übertragung durch SSH, wenn die Verbindung abbrechen könnte

Senden eines Snapshots, wenn die Verbindung abbrechen kann.

 

zfs send -vc -I rpool/data/vm-100-disk-2@snap[vorheriger] -R rpool/data/vm-100-disk-2@[neuer] | ssh -l <user> 192.168.10.99 zfs recv -sdvF backup

 

oder

 

ssh -l <user> 192.168.10.99 'sudo zfs send -vc -I rpool/data/vm-100-disk-2@snap[vorheriger] -R rpool/data/vm-100-disk-2@[neuer]' | zfs recv -sdvF backup

 

Wenn die Verbindung abgebrochen ist folgendes auf dem Zielhost ausführen:

 

zfs get receive_resume_token rpool/data/vm-disk-100-2

 

Jetzt kann wieder der Stream fortgesetzt werden:

 

ssh -l <user> 192.168.10.99 'sudo zfs send -vt <token>' |  zfs recv -sv backup/data/vm-100-disk-2

 

oder

 

zfs send -vt <token> | ssh -l <user> 192.168.10.99 zfs recv -sv backup/data/vm-100-disk-2

 

Bestimmen der Größe eines Snapshots

zfs send -vn -I rpool/data/vm-100-disk-2@snap[vorheriger] rpool/data/vm-100-disk-2@[neuer]