#!/bin/sh set -e POOL=backup-chassis ZVOL=system/backup/chassis.verweg.com/store MAILTO=root if [ -n "$SSH_ORIGINAL_COMMAND" ]; then set -- $SSH_ORIGINAL_COMMAND fi if [ $# -lt 1 ];then echo "No destination dataset given" exit 1 fi # zfs destroy backup-chassis/system/%recv ( zfs snapshot system/backup/chassis.verweg.com/store@backup geli attach -k /opt/backup/key -j /opt/backup/pass /dev/zvol/${ZVOL} zpool import -R /backup/chassis.verweg.com/ -N ${POOL} if zstdcat -vf | time zfs receive -v -Fu ${POOL}/${1}; then zpool export ${POOL} geli detach /dev/zvol/${ZVOL}.eli zfs destroy system/backup/chassis.verweg.com/store@backup logger -t zfs-receive "succesful backup for ${POOL}/${1}" echo "OK" else logger -t zfs-receive "failed backup for ${POOL}/${1}" echo "zfs-receive: failed backup for ${POOL}/${1}" | mail $MAILTO zpool export ${POOL} geli detach /dev/zvol/${ZVOL}.eli echo "ERROR" exit 1 fi ) 2>&1 | tee -a /var/log/zfs-receive.log exit 0