ZFS-SNAPSHOT(8)         FreeBSD System Manager's Manual        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)

FreeBSD 15.1-STABLE-HBSD         July 11, 2022                 ZFS-SNAPSHOT(8)