# zsnapper sample configuration

# Each section is the name of a ZFS file system
# All settings are applied recursively to all file system descendants
#
[tank]
# Frequency of snapshots
# Set to empty value to disable snapshoting
# 
# Interval units are 'd', 'h' and 'm' for days, hours and minutes.
# they can also be combined if you for example wants a snapshot taken every 1 and a half days:
;snapshot_interval=1d 12h
snapshot_interval=1h

# Remote replication
# possible other value is 'latest' to only sync the latest snapshot
# Set to empty value to not send the snapshots to remote
send_enable=all

# source_zfs_cmd is the command to execute zfs locally.
# The target_zfs_cmd option is the command to use to execute zfs on target machine.
# target_test_cmd, if set, is executed before trying to send any snapshot to remote.
# If target_test_cmd returns a non-zero status the remote is considered to be unavailable
# and no snapshots are sent. (A warning is written in the log though)
#
# NOTE:
#  The command arguments must not contain whitespace characters, due to implementation details.
#
# Variables can be used in target_zfs_cmd and target_test_cmd. Any setting
# available in the section can be used as a variable
source_zfs_cmd=/usr/bin/sudo /sbin/zfs
target_zfs_cmd=/usr/bin/ssh ${target_user}@${target_host} /usr/bin/sudo /sbin/zfs
target_test_cmd=/usr/bin/ssh ${target_user}@${target_host} echo "success"
# The target_host option is optional but recommended if you send snapshots to a remote host.
target_host=my.backup.server.tld
# target_user is not a actually a zsnapper option; but it's used as a variable in the remote commands.
target_user=backup

# target_fs is the file system on the receiving side that should receive zfs sends
# for this file system.
# NOTE:
#  Just like any other option this is inherited by file system descendants,
#  but if a child has the same target_zfs_target as the parent, the child 
#  will instead use this to figure out where the parent is and be sent to 
#  it position relative to the parent.
#  For example: The local file system tank/ROOT will be sent to tank/backup/client/ROOT.
target_fs=tank/backup/client

# These can be set to use custom arguments to zfs send and zfs receive
send_flags=-D -p
recv_flags=

# snapshot weeding
# set weed_enable to an empty value to disable snapshot weeding.
# NOTE:
#  If weeding is enabled but no keep_<time> setting is configured all 
#  your snapshots, except the latest, will be removed. Make sure to 
#  configure your weeding settings carefully.
weed_enable=1
keep_hourly=24
keep_daily=7
keep_weekly=4
keep_monthly=4


[tank/SWAP]
snapshot_interval=
send_enable=

[tank/media]
snapshot_interval=
send_enable=

[tank/tmp]
snapshot_interval=
send_enable=

[tank/var/log]
snapshot_interval=1m
keep_1min=5
keep_15min=4

[tank/var/tmp]
snapshot_interval=
send_enable=



# '@' in the section title indicates that this file system is not local
# note that the *_zfs_cmd settings.
# 
# The remote snapshots are only created *after* the local, after zsnapper
# has aquired the execution lock, so if zsnapper takes a long time to execute
# some snapshotting may be delayed.
#
# the '@' is required since zsnapper otherwise have no way to know which 
# filesystems are on the same server...
[zroot/backup@remote_system1]
source_zfs_cmd=/usr/bin/ssh user@remote_system1 /sbin/zfs
target_zfs_cmd=/sbin/zfs
send_enable=all
snapshot_interval=1h
target_fs=tank/backup/remote_system1
recv_flags=-u
weed_enable=1
keep_hourly=24
keep_daily=7
keep_weekly=4
keep_monthly=4