snapdiff v0.1

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:

  1. viene impostata su “visible” la proprietà “snapdir”
  2. viene eseguito il diff tra il mountpoint del filesystem e lo snapshot
  3. 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.

Comments are closed.