---
name: "zfs-clone"
section: "8"
platform: "linux"
package: "zfsutils-linux"
version: "2.3.9-0+deb13u1"
release: "Debian 13 (Trixie)"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/zfs-clone"
---

# zfs-clone(8)

clone snapshot of ZFS dataset

## NAME

**zfs-clone** – clone snapshot of ZFS dataset

## SYNOPSIS

**zfs** **clone** \[**-p**\] \[**-o** *property*=*value*\]… *snapshot* *filesystem*\|*volume*

## DESCRIPTION

See the Clones section of [zfsconcepts(7)](/zfsconcepts/7.md) for details. The target dataset can be located anywhere in the ZFS hierarchy, and is created as the same type as the original.

- **-o** *property*=*value*

  Sets the specified property; see **zfs** **create** for details.

- **-p**

  Creates all the non-existing parent datasets. Datasets created in this manner are automatically mounted according to the **mountpoint** property inherited from their parent. If the target filesystem or volume already exists, the operation completes successfully.

## EXAMPLES

### Example 1 : No Creating a ZFS Clone

The following command creates a writable file system whose initial contents are the same as *pool/home/bob@yesterday*.

```
# zfs clone pool/home/bob@yesterday pool/clone
```

### Example 2 : No 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
```

## SEE ALSO

[zfs-promote(8)](/zfs-promote/8.md), [zfs-snapshot(8)](/zfs-snapshot/8.md)
