Skip to content

Instantly share code, notes, and snippets.

@dlangille
Created December 23, 2017 20:15
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 dlangille/480dbca509562eb03e76c2e1b576c6d2 to your computer and use it in GitHub Desktop.
Save dlangille/480dbca509562eb03e76c2e1b576c6d2 to your computer and use it in GitHub Desktop.
FreshPorts archive-snapshots-for-backup.sh
#!/bin/sh
ACTION=$1
BASENAME="/usr/bin/basename"
MOUNT="/sbin/mount"
UMOUNT="/sbin/umount"
ZFS="/sbin/zfs"
DATASETROOT="main_tank/data/freshports/backend/queues"
DATASETS="${ZFS} list -r -H -o name ${DATASETROOT}"
SNAPSHOTDIRECTORY='/.zfs/snapshot/'
SNAPNAME="bu"
TMP_MNT_POINT="/mnt/freshports-queues"
case ${ACTION} in
"create")
${ZFS} snapshot -r "${DATASETROOT}@${SNAPNAME}"
for dataset in `${DATASETS}`
do
echo mkdir -p ${TMP_MNT_POINT}/${dataset}
mkdir -p ${TMP_MNT_POINT}/${dataset}
done
for dataset in `${DATASETS}`
do
if [ ${dataset} != ${DATASETROOT} ]
then
echo ${MOUNT} -t zfs -o ro ${dataset}@${SNAPNAME} ${TMP_MNT_POINT}/${dataset}
${MOUNT} -t zfs -o ro ${dataset}@${SNAPNAME} ${TMP_MNT_POINT}/${dataset}
fi
done
;;
"destroy")
for dataset in `${DATASETS}`
do
# Ignore the jail root. Nothing in there to backup.
if [ "${dataset}" = "${DATASETROOT}" ]
then
continue
fi
echo ${UMOUNT} ${TMP_MNT_POINT}/${dataset}
done
${ZFS} destroy -r "${DATASETROOT}@${SNAPNAME}"
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment