Skip to content

Instantly share code, notes, and snippets.

@rayddteam
Created June 5, 2019 22:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rayddteam/87e9bd96ccc7749796cc9a7311d54383 to your computer and use it in GitHub Desktop.
Save rayddteam/87e9bd96ccc7749796cc9a7311d54383 to your computer and use it in GitHub Desktop.
Daily sync SSD data to HDD for backup (or any other local zfs pools)
#!/bin/sh
SRC="z"
DST="backup"
DATE=$(date +%Y-%m-%d)
### For first time run:
# zfs snapshot -r ${SRC}@${DATE} || (echo "Fail to create ${SRC}@${DATE}"; exit 1)
# zfs send -R ${SRC}@${DATE} | zfs recv -F ${DST}
# exit 0
echo "Today: ${DATE}"
LAST_SNAPSHOT=$(zfs list -Hd1 -t snapshot -o name ${DST} | grep -e '[[:digit:]]\{4\}-[[:digit:]]\{2\}-[[:digit:]]\{2\}' | sed 's/.*@//' | sort | tail -n1)
echo "Transfer snapshots between ${LAST_SNAPSHOT} and ${DATE}"
if [ "${LAST_SNAPSHOT}" == "${DATE}" ]; then
echo "Already have target snapshot ${DST}@${DATE}";
exit 0;
fi
echo -n "Creating snapshot ${SRC}@${DATE} ... "
zfs snapshot -r ${SRC}@${DATE} || (echo "Fail to create ${SRC}@${DATE}"; exit 1)
echo "Done."
echo -n "Sending snapshots from ${LAST_SNAPSHOT} to ${DATE} ... "
(zfs send -Ri ${LAST_SNAPSHOT} ${SRC}@${DATE} | zfs receive ${DST}) || (echo "Fail to send/receive snapshots."; exit 1)
echo "Done."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment