zfs-destroy.8
| ZFS-DESTROY(8) | System Manager's Manual | ZFS-DESTROY(8) |
NAME
zfs-destroy —
destroy ZFS dataset, snapshots, or bookmark
SYNOPSIS
zfs |
destroy [-Rfnprv]
filesystem|volume |
zfs |
destroy [-Rdnprv]
filesystem|volume@snap[%snap[,snap[%snap]]]… |
zfs |
destroy
filesystem|volume#bookmark |
DESCRIPTION
zfsdestroy[-Rfnprv] filesystem|volume- Destroys the given dataset. By default, the command unshares any file
systems that are currently shared, unmounts any file systems that are
currently mounted, and refuses to destroy a dataset that has active
dependents (children or clones).
-R- Recursively destroy all dependents, including cloned file systems outside the target hierarchy.
-f- Forcibly unmount file systems. This option has no effect on non-file systems or unmounted file systems.
-n- Do a dry-run ("No-op") deletion. No data will be deleted.
This is useful in conjunction with the
-vor-pflags to determine what data would be deleted. -p- Print machine-parsable verbose information about the deleted data.
-r- Recursively destroy all children.
-v- Print verbose information about the deleted data.
Extreme care should be taken when applying either the
-ror the-Roptions, as they can destroy large portions of a pool and cause unexpected behavior for mounted file systems in use. zfsdestroy[-Rdnprv] filesystem|volume@snap[%snap[,snap[%snap]]]…- Attempts to destroy the given snapshot(s). This will fail if any clones of
the snapshot exist or if the snapshot is held. In this case, by default,
zfsdestroywill have no effect and exit in error. If the-doption is applied, the command will instead mark the given snapshot for automatic destruction as soon as it becomes eligible. While marked for destruction, a snapshot remains visible, and the user may create new clones from it and place new holds on it.The read-only snapshot properties defer_destroy and userrefs are used by
zfsdestroyto determine eligibility and marked status.An inclusive range of snapshots may be specified by separating the first and last snapshots with a percent sign. The first and/or last snapshots may be left blank, in which case the filesystem's oldest or newest snapshot will be implied.
Multiple snapshots (or ranges of snapshots) of the same filesystem or volume may be specified in a comma-separated list of snapshots. Only the snapshot's short name (the part after the @) should be specified when using a range or comma-separated list to identify multiple snapshots.
-R- Recursively destroy all clones of these snapshots, including the
clones, snapshots, and children. If this flag is specified, the
-dflag will have no effect. -d- Rather than returning error if the given snapshot is ineligible for immediate destruction, mark it for deferred, automatic destruction once it becomes eligible.
-n- Do a dry-run ("No-op") deletion. No data will be deleted.
This is useful in conjunction with the
-por-vflags to determine what data would be deleted. -p- Print machine-parsable verbose information about the deleted data.
-r- Destroy (or mark for deferred deletion) all snapshots with this name in descendent file systems.
-v- Print verbose information about the deleted data.
Extreme care should be taken when applying either the
-ror the-Roptions, as they can destroy large portions of a pool and cause unexpected behavior for mounted file systems in use. zfsdestroyfilesystem|volume#bookmark- The given bookmark is destroyed.
EXAMPLES
Example 1: 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@yesterdayExample 2: 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:
#zfscreatepool/project/production populate /pool/project/production with data #zfssnapshotpool/project/production@today #zfsclonepool/project/production@today pool/project/beta make changes to /pool/project/beta and test them #zfspromotepool/project/beta #zfsrenamepool/project/production pool/project/legacy #zfsrenamepool/project/beta pool/project/production once the legacy version is no longer needed, it can be destroyed #zfsdestroypool/project/legacy
Example 3: 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:
#zfsdestroy-rpool/users@7daysago #zfsrename-rpool/users@6daysago @7daysago #zfsrename-rpool/users@5daysago @6daysago #zfsrename-rpool/users@4daysago @5daysago #zfsrename-rpool/users@3daysago @4daysago #zfsrename-rpool/users@2daysago @3daysago #zfsrename-rpool/users@yesterday @2daysago #zfsrename-rpool/users@today @yesterday #zfssnapshot-rpool/users@today
SEE ALSO
| March 16, 2022 | Debian |