Michael Hagedorn
2019-09-27 14:25:25 UTC
Hi.
Ich habe einen kleinen Server, der mit ZFS-Dateisystemen ausgestattet
ist. Dazu nutze ich zfs-auto-snapshot, um regelmäßig Snapshots erstellen
zu lassen. In dem Server hängt eine zweite Platte, die als Backup
gedacht ist. Dorthin würde ich gerne per Script die neuesten Snapshots
automatisch kopieren lassen (den Rest regelt ZFS dann selbst).
Meine Idee dazu war:
zfs list -r -t snapshot -o name
liefert eine Liste wie diese:
rpool/vm-901-disk-***@zfs-auto-snap_daily-2019-09-25-0425
rpool/vm-901-disk-***@zfs-auto-snap_daily-2019-09-26-0425
rpool/vm-901-disk-***@zfs-auto-snap_daily-2019-09-27-0425
.
rpool/vm-902-disk-***@zfs-auto-snap_daily-2019-09-25-0425
rpool/vm-902-disk-***@zfs-auto-snap_daily-2019-09-26-0425
rpool/vm-902-disk-***@zfs-auto-snap_daily-2019-09-27-0425
Da wurde also täglich ein Snapshot von den hier dargestellten zwei virt
HDDs erstellt. Ich benötige aber für das Senden zum zweiten ZFS-Pool
*nur* den Namen des neuesten; in diesem Fall also den vom 27.09.
Eigentlich hatte ich gehofft, dass das mit zfs-Bordmitteln geht -- finde
aber bisher nichts.
Eine Alternative mit awk, die hier aus der Gruppe stammt, war:
zfs list -t snapshot -o name |
awk -F- '{if(m[$3]<$0)m[$3]=$0;}
END {for(x in m){print x " " m[x];}}'
aber das funktioniert auch nicht, da es nur von der letzten Datei die
letzte Fassung ausspuckt. Hat jemand eine gute Idee, wie ich von allen
VMs jeweils nur den letzten Snapshot ausspucken lassen kann? Danach
ginge es dann weiter mit:
zfs send -Rv
rpool/data/vm-902-disk-***@zfs-auto-snap_daily-2019-neuester-Zeitstempel|
zfs receive -Fdus tank
... das funktioniert einwandfrei.
Danke für einen guten Tipp.
Michael
Ich habe einen kleinen Server, der mit ZFS-Dateisystemen ausgestattet
ist. Dazu nutze ich zfs-auto-snapshot, um regelmäßig Snapshots erstellen
zu lassen. In dem Server hängt eine zweite Platte, die als Backup
gedacht ist. Dorthin würde ich gerne per Script die neuesten Snapshots
automatisch kopieren lassen (den Rest regelt ZFS dann selbst).
Meine Idee dazu war:
zfs list -r -t snapshot -o name
liefert eine Liste wie diese:
rpool/vm-901-disk-***@zfs-auto-snap_daily-2019-09-25-0425
rpool/vm-901-disk-***@zfs-auto-snap_daily-2019-09-26-0425
rpool/vm-901-disk-***@zfs-auto-snap_daily-2019-09-27-0425
.
rpool/vm-902-disk-***@zfs-auto-snap_daily-2019-09-25-0425
rpool/vm-902-disk-***@zfs-auto-snap_daily-2019-09-26-0425
rpool/vm-902-disk-***@zfs-auto-snap_daily-2019-09-27-0425
Da wurde also täglich ein Snapshot von den hier dargestellten zwei virt
HDDs erstellt. Ich benötige aber für das Senden zum zweiten ZFS-Pool
*nur* den Namen des neuesten; in diesem Fall also den vom 27.09.
Eigentlich hatte ich gehofft, dass das mit zfs-Bordmitteln geht -- finde
aber bisher nichts.
Eine Alternative mit awk, die hier aus der Gruppe stammt, war:
zfs list -t snapshot -o name |
awk -F- '{if(m[$3]<$0)m[$3]=$0;}
END {for(x in m){print x " " m[x];}}'
aber das funktioniert auch nicht, da es nur von der letzten Datei die
letzte Fassung ausspuckt. Hat jemand eine gute Idee, wie ich von allen
VMs jeweils nur den letzten Snapshot ausspucken lassen kann? Danach
ginge es dann weiter mit:
zfs send -Rv
rpool/data/vm-902-disk-***@zfs-auto-snap_daily-2019-neuester-Zeitstempel|
zfs receive -Fdus tank
... das funktioniert einwandfrei.
Danke für einen guten Tipp.
Michael