Storing revisions of large files using ZFS snapshots

Alexander Leidinger Alexander at
Wed Jun 1 08:03:17 UTC 2011

Quoting Jeremy Chadwick <freebsd at> (from Tue, 31 May  
2011 17:52:19 -0700):

> Speaking strictly about ZFS snapshots:
> The mentality of ZFS snapshots seems very similar to that of UFS
> snapshots, in the sense that the design/model seems to be oriented
> towards "bare-metal" restoration.
> That works generally okay (depends on your view) for administrators,
> but depending on your demographic, it almost certainly won't work for
> users.
> We've found that in most cases, a user will overwrite or rm a file which
> they didn't mean to and wish to restore just that file.  They need to do
> so quickly and easily.  ZFS and UFS snapshots don't make this easy for
> them to accomplish (ZFS is easier than UFS in this regard, absolutely).

What's hard about doing a
cp /path/to/fs/.zfs/snapshot/snap_name/subdir/file /path/to/fs/subdir/

If it is hard for the user to determine what is the base dataset for  
his current place, you could provide a zfs restore script (requirement  
of the following, feel free to adapt: user is in the dir where he  
wants to restore, commands not really tested, errors not handled):
  - zfsrestore list
    -> base=$(df . | awk '/Mounted on/ {next} {print $6}')
    -> echo Available snapshots
    -> ls -1 ${base}/.zfs/snapshot
  - zfs restore <snapshot> <file>
    -> base=$(df . | awk '/Mounted on/ {next} {print $6}')
    -> reminder=$(echo $PWD | sed -e "s:${base}/::g")
    -> cp -v ${base}/.zfs/snapshot/$arg1/${reminder}/$arg2 .


--    Alexander @ PGP ID = B0063FE7       netchild @  : PGP ID = 72077137

More information about the freebsd-fs mailing list