verweg-zfs-backup/client/zfs-receive.sh

36 lines
968 B
Bash
Executable File

#!/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