====== Example for using rsnapshot-zfs-helper with rsnapshot ====== This example has been created using Debian 9.3 . ## ## setup zfs (optional) ## # 'bpo' kernel won't do the trick apt-get install linux-image-amd64 apt-get clean reboot - add "contrib" to the apt-sources apt-get update apt-get install zfs-dkms zfsutils-linux rsnapshot apt-get clean /sbin/modprobe zfs ## create partition for zfs: Device Boot Start End Sectors Size Id Type ... /dev/sda3 4194304 209715199 205520896 98G bf Solaris ## create zpool without mount point zpool create zp-bak /dev/sda3 -m none # create prereq. data sets zfs create zp-bak/backup -o compression=lz4 -o snapdir=hidden -o xattr=sa -o acltype=posixacl -o mountpoint=/backup zfs create zp-bak/backup/hosts -o compression=lz4 -o snapdir=hidden -o xattr=sa -o acltype=posixacl -o mountpoint=/backup/hosts df -> Filesystem 1K-blocks Used Available Use% Mounted on ... zp-bak/backup 99041152 128 99041024 1% /backup zp-bak/backup/hosts 99041152 128 99041024 1% /backup/hosts ## ## create ssh keypair ## ssh-keygen -N '' -C "backup@$(hostname)-$(date -Is)" -f /root/.ssh/id_rsa ## ## install & prepare rsnapshot ## apt-get install rsnapshot apt-get clean cp -ax /etc/rsnapshot.conf /etc/rsnapshot.conf.$( date -Is ) vi /etc/rsnapshot.conf [...] snapshot_root /backup/hosts/vstest01 cmd_ssh /usr/bin/ssh #interval hourly 6 interval daily 7 interval weekly 4 interval monthly 3 cmd_cp /bin/true cmd_preexec /usr/sbin/rsnapshot-zfs-helper /etc/rsnapshot.conf preexec cmd_postexec /usr/sbin/rsnapshot-zfs-helper /etc/rsnapshot.conf postexec vi /etc/rsnapshot-zfs-helper.conf snapshots_config_dir=/etc ## ## create a backup job ## # create zfs dataset zfs create zp-bak/backup/hosts/vstest01 -o compression=lz4 -o snapdir=hidden -o xattr=sa -o acltype=posixacl -o mountpoint=/backup/hosts/vstest01/daily.0 df -> Filesystem 1K-blocks Used Available Use% Mounted on ... zp-bak/backup/hosts/vstest01 99041024 0 99041024 0% /backup/hosts/vstest01/daily.0 # create backup config /etc/rsnapshot.conf backup root@vstest01:/ ./ # distribute ssh key to backup client ssh-copy-id root@vstest01 # test ssh login ssh root@vstest01 hostname # run first backup rsnapshot daily # check zfs list -t all -> NAME USED AVAIL REFER MOUNTPOINT zp-bak 592M 93.9G 19K none zp-bak/backup 592M 93.9G 19K /backup zp-bak/backup/hosts 592M 93.9G 40K /backup/hosts zp-bak/backup/hosts/vstest01 592M 93.9G 592M /backup/hosts/vstest01/daily.0 zp-bak/backup/hosts/vstest01@daily.2018-01-30T14:53:29Z 0 - 592M - # run second backup rsnapshot daily # check zfs list -t all -> NAME USED AVAIL REFER MOUNTPOINT zp-bak 597M 93.9G 19K none zp-bak/backup 596M 93.9G 19K /backup zp-bak/backup/hosts 596M 93.9G 40K /backup/hosts zp-bak/backup/hosts/vstest01 596M 93.9G 592M /backup/hosts/vstest01/daily.0 zp-bak/backup/hosts/vstest01@daily.2018-01-30T14:53:29Z 4.32M - 592M - zp-bak/backup/hosts/vstest01@daily.2018-01-30T14:57:49Z 0 - 592M - ## ## enable rotation of higher rotation levels ## /etc/cron.d/rsnapshot-zfs-helper 35 23 * * * root /usr/sbin/rsnapshot-zfs-helper /etc/rsnapshot.conf rotate daily 45 23 * * 5 root /usr/sbin/rsnapshot-zfs-helper /etc/rsnapshot.conf rotate weekly 55 23 1 * * root /usr/sbin/rsnapshot-zfs-helper /etc/rsnapshot.conf rotate monthly