Ispitato dal post di sickness riguardo la possibilità di capire quali file sono cambiati rispetto ad uno specifico snapshot mi sono “divertito” a realizzare questo semplice script che non fa altro che ispezionare tramite il comando diff un filesystem ZFS e un suo snapshot specifico. In fondo lo script effettua dei semplici controlli e migliora l’aspetto dell’output per renderlo “leggermente” più leggibile, magari in future versioni integrerò anche altre features. L’unico vincolo richiesto è che il filesystem ZFS che si intende “ispezionare” sia attualmente montato.
Le operazioni svolte sono semplici:
- viene impostata su “visible” la proprietà “snapdir”
- viene eseguito il diff tra il mountpoint del filesystem e lo snapshot
- viene ripristinala la proprietà “snapdir” al suo valore originale
La chiave del funzionamento dello script è essenzialmente il fatto che è possibile “montare” gli snapshot di un filesystem impostando la proprietà con:
# zfs set snapdir=visible
a questo punto potremmo accedere (in modalità read-only) a tutti i file del filesystem così come apparivano al momento della creazione dello snapshot. Per accedervi possiamo operare in questo modo:
$ cd .zfs/snapdir//file_interessato
facile vero?
Per usare invece il mio script e controllare quali file sono cambiati, cancellati oppure aggiunti basta il comando:
$ pfexec ./snapdiff rpool/export/home/luca snap-2008-08-15
e vedremo quali file sono cambiati nella mia home dal giorno 15 agosto.




