sbc-deploys/modules/btrbk/restore-snapshot

46 lines
1 KiB
Bash
Executable file

#!/usr/bin/env bash
set -e
ROOT_DIRECTORY=$1
SUBVOLUME=$2
TARGET_SUBVOLUME="${ROOT_DIRECTORY}/${SUBVOLUME}"
SNAPSHOT_DIRECTORY="${ROOT_DIRECTORY}/@snapshots"
if [ "${ROOT_DIRECTORY}" == "" ]
then
echo "No root directory provided"
exit 1
fi
if [ ! -d "${SNAPSHOT_DIRECTORY}" ]
then
echo "No snapshot directory in root ${ROOT_DIRECTORY}"
exit 1
fi
if [ "${SUBVOLUME}" == "" ]
then
echo "No subvolume provided"
exit 1
fi
LATEST_SNAPSHOT=$(ls ${ROOT_DIRECTORY}/@snapshots/ | grep "${SUBVOLUME}\." | awk '{ print length, $0 }' | sort | tail -n 1 | awk '{ print $2 }')
SNAPSHOT_PATH="${SNAPSHOT_DIRECTORY}/${LATEST_SNAPSHOT}"
if [ ! -d "${SNAPSHOT_PATH}" ] || [ "${LATEST_SNAPSHOT}" == "" ]
then
echo "Couldn't find latest snapshot for subvolume ${SUBVOLUME}"
exit 1
fi
if [ -d "${TARGET_SUBVOLUME}" ]
then
echo "Removing existing subvolume"
btrfs subvolume delete "${TARGET_SUBVOLUME}"
fi
echo "Snapshotting ${SNAPSHOT_PATH} into ${TARGET_SUBVOLUME}"
btrfs subvolume snapshot "${SNAPSHOT_PATH}" "${TARGET_SUBVOLUME}"