UFS-Snapshots verwenden
Mit Hilfe eines Snapshots kann man den Stand eines Dateisystems festhalten. Verwendet man UFS als Dateisystem, so kann mit mount(8) ein Snapshot erzeugt werden. Folgendes Beispiel erzeugt einen Snapshot mit dem Namen snap1 von /var im Verzeichnis /var/.snap:
# mount -u -o snapshot /var/.snap/snap1 /var
Möchte man nun Daten des Snapshots lesen, so kann dieser mit Hilfe von mdconfig(8) und mount ins System eingebunden werden. Werden nun Änderungen am Dateisystem vorgenommen, sind diese im Snapshot nicht sichtbar:
# echo "test" > /var/testdatei
# mount -u -o snapshot /var/.snap/snap1 /var
# mdconfig -a -t vnode -f /var/.snap/snap1 -u 0
WARNING: opening backing store: /var/.snap/snap1 readonly
# mkdir /mnt/snap1
# mount -o ro /dev/md0 /mnt/snap1
# cat /mnt/snap1/testdatei
test
# echo "test2" >> /var/testdatei
# cat /var/testdatei
test
test2
# cat /mnt/snap1/testdatei
test
Vorhandene Snapshots können mit Hilfe von snapinfo(8) gefunden werden:
# snapinfo -a
/var/.snap/snap1
Eine detailliertere Ausgabe erhält man mit der -v Option:
# snapinfo -v -a
/dev/ad0s1a mounted on /
no snapshots found
/dev/ad0s1d mounted on /tmp
no snapshots found
/dev/ad0s1f mounted on /usr
no snapshots found
/dev/ad0s1e mounted on /var
snapshot /var/.snap/snap1 (inode 172)
Wird der Snapshot nicht mehr benötigt, kann er mit Hilfe vom umount(8), mdconfig und rm(1) aus dem System entfernt und gelöscht werden:
# umount /mnt/snap1
# mdconfig -d -u 0
# rm -f /var/.snap/snap1
Benutzt man ZFS als Dateisystem, stehen auch Shapshots zur Verfügung, diese werden allerdings mit Hilfe von zfs(1) verwaltet.