ZFS-SNAPSHOT(8)

NAME
zfs-snapshot - create snapshots of ZFS datasets

SYNOPSIS
zfs snapshot [-r] [-o property=value]… dataset@snapname…

DESCRIPTION
Creates a snapshot of a dataset or multiple snapshots of different datasets.

Snapshots are created atomically. That is, a snapshot is a consistent image of a dataset at a specific point in time; it includes all modifications to the dataset made by system calls that have successfully completed before that point in time. Recursive snapshots created through the -r option are all created at the same time.

zfs snap can be used as an alias for zfs snapshot.

See the Snapshots section of zfsconcepts(7) for details.

-o property=value
    Set the specified property; see zfs create for details.

-r  Recursively create snapshots of all descendent datasets

EXAMPLES

  Example 1 : Creating a ZFS Snapshot
The following command creates a snapshot named yesterday. This snapshot is mounted on demand in the .zfs/snapshot directory at the root of the pool/home/bob file system.
    # zfs snapshot pool/home/bob@yesterday

  Example 2 : Creating and Destroying Multiple Snapshots
The following command creates snapshots named yesterday of pool/home and all of its descendent file systems. Each snapshot is mounted on demand in the .zfs/snapshot directory at the root of its file system. The second command destroys the newly created snapshots.
    # zfs snapshot -r pool/home@yesterday
    # zfs destroy -r pool/home@yesterday

  Example 3 : Promoting a ZFS Clone
The following commands illustrate how to test out changes to a file system, and then replace the original file system with the changed one, using clones, clone promotion, and renaming:
    # zfs create pool/project/production
      populate /pool/project/production with data
    # zfs snapshot pool/project/production@today
    # zfs clone pool/project/production@today pool/project/beta
      make changes to /pool/project/beta and test them
    # zfs promote pool/project/beta
    # zfs rename pool/project/production pool/project/legacy
    # zfs rename pool/project/beta pool/project/production
      once the legacy version is no longer needed, it can be destroyed
    # zfs destroy pool/project/legacy

  Example 4 : Performing a Rolling Snapshot
The following example shows how to maintain a history of snapshots with a consistent naming scheme. To keep a week's worth of snapshots, the user destroys the oldest snapshot, renames the remaining snapshots, and then creates a new snapshot, as follows:
    # zfs destroy -r pool/users@7daysago
    # zfs rename -r pool/users@6daysago @7daysago
    # zfs rename -r pool/users@5daysago @6daysago
    # zfs rename -r pool/users@4daysago @5daysago
    # zfs rename -r pool/users@3daysago @4daysago
    # zfs rename -r pool/users@2daysago @3daysago
    # zfs rename -r pool/users@yesterday @2daysago
    # zfs rename -r pool/users@today @yesterday
    # zfs snapshot -r pool/users@today

SEE ALSO
zfs-bookmark(8), zfs-clone(8), zfs-destroy(8), zfs-diff(8), zfs-hold(8), zfs-rename(8), zfs-rollback(8), zfs-send(8)