ZFS is the filesystem used in VPSStorages infrastructure. One of its most powerful features is snapshot support — instant point-in-time copies of data that make backups fast, reliable and efficient.

What is a ZFS Snapshot?

A snapshot is an instant copy of the filesystem at a specific point in time. Unlike traditional backup methods, ZFS snapshots:

  • Are created instantly — regardless of data size
  • Use minimal disk space (only the differences)
  • Don't impact system performance
  • Allow precise recovery to any point in time

Basic ZFS Backup Commands

Create a Snapshot

sudo zfs snapshot pool/dataset@snapshot-name # Example: sudo zfs snapshot ssdpool/data@2026-04-09

List Snapshots

sudo zfs list -t snapshot sudo zfs list -t snapshot pool/dataset

Restore from Snapshot

# Warning: rollback deletes all changes after the snapshot sudo zfs rollback pool/dataset@2026-04-09

Delete a Snapshot

sudo zfs destroy pool/dataset@2026-04-09

Sending Backups to a Remote Server

ZFS allows sending snapshots to another server via zfs send and zfs receive:

# Send full snapshot to remote server sudo zfs send pool/dataset@snapshot | ssh user@backup-server "sudo zfs receive backup-pool/dataset" # Send only the differences (incremental) sudo zfs send -i pool/dataset@old-snap pool/dataset@new-snap | ssh user@backup-server "sudo zfs receive backup-pool/dataset"
Incremental Backup Advantage

Incremental backup sends only the changes between two snapshots. For a 100 GB dataset with few daily changes, incremental backup may be only a few MB — huge savings in bandwidth and time.

Automation with Cron

Create a script for automatic daily backups:

sudo nano /usr/local/sbin/zfs-backup.sh
#!/bin/bash DATASET="ssdpool/data" DATE=$(date +%Y-%m-%d) REMOTE="user@backup-server" REMOTE_POOL="backup-pool/data" # Create snapshot zfs snapshot "${DATASET}@${DATE}" # Find previous snapshot PREV=$(zfs list -t snapshot -o name -s creation "${DATASET}" | tail -2 | head -1) # Send incremental backup if [ -n "$PREV" ]; then zfs send -i "${PREV}" "${DATASET}@${DATE}" | ssh "${REMOTE}" "zfs receive ${REMOTE_POOL}" fi # Delete snapshots older than 30 days zfs list -t snapshot -o name "${DATASET}" | grep "@" | head -n -30 | xargs -r zfs destroy
sudo chmod +x /usr/local/sbin/zfs-backup.sh

Add to crontab to run every night at 02:00:

sudo crontab -e # Add the line: 0 2 * * * /usr/local/sbin/zfs-backup.sh >> /var/log/zfs-backup.log 2>&1
⚠️ Important Backup Strategy Note

Snapshots on the same pool are NOT a complete backup. If the pool fails physically, you'll lose the snapshots too. Always copy data to a remote server or separate storage.

Storage Plans for Backup from VPSStorages

Our Storage plans are built on ZFS mirror (two disks in mirror) for maximum reliability. Ideal for storing ZFS backups from VPS, archiving business data and long-term storage.

Conclusion

ZFS snapshots are one of the most efficient methods of data archiving. Fast, reliable and space-efficient — the right tool for any serious server. Combine them with a dedicated storage plan from VPSStorages for complete data protection.