Back to Knowledge Base
storageNODE: #zfs-snapshots-clones

ZFS Snapshots, Clones, & Replication

Point-in-time read-only copies (snapshots), writable branches (clones), and stream-based dataset replication (zfs send/recv).

AKA:ZFS Snapshots, zfs send, zfs recv, ZFS Clones
#storage#zfs#backup#snapshots#replication#disaster-recovery
GRAPH_RELATIONS // CONNECTED_NODESLINKED

ZFS Snapshots, Clones, & Replication

1. ZFS Snapshots

A Snapshot is a read-only point-in-time copy of a ZFS dataset. Because ZFS is a Copy-on-Write (CoW) Filesystems, creating a snapshot takes milliseconds and consumes zero additional storage initially.

  • Space Consumption: A snapshot only consumes space as blocks in the active dataset are modified or deleted.
  • Hidden Directory: Accessible via .zfs/snapshot/<name>/ for simple file-level recovery.
  • Command: zfs snapshot pool/dataset@2026-09-03-backup

2. ZFS Clones

A Clone is a writable copy of a dataset spawned directly from a snapshot.

  • Just like snapshots, clones initially consume zero space.
  • They are ideal for spinning up test databases, ephemeral build environments, or virtual machine templates.
  • Command: zfs clone pool/dataset@snap pool/test-clone

3. ZFS Send & Receive (Stream Replication)

ZFS provides native serialized stream replication at the block level:

  • Full Backup: zfs send pool/data@snap1 | zfs recv remote-pool/backup
  • Incremental Backup: Only sends blocks that changed between two snapshots:
    zfs send -i pool/data@snap1 pool/data@snap2 | ssh remote_host zfs recv backup-pool/data
  • Encrypted Replication (Raw Send): Transmits encrypted datasets without needing decryption keys on the backup server (zfs send -w).