This commit is contained in:
Martin Sekera 2020-08-27 19:41:22 +02:00
parent 8d816e84ab
commit 8ce4f997df

105
btv.zsh
View file

@ -1,105 +0,0 @@
#! /bin/zsh
setopt extendedglob
function die() {
echo "!!! $1"
exit 1
}
### read the config file
source /etc/btv/config
### verify keyfile sanity
if [[ ! -a "${KEYFILE}" ]]; then
echo "The keyfile (${KEYFILE}) does not exist."
exit 2
fi
KEYFILE_OWNER=$(stat -c "%u" $KEYFILE)
KEYFILE_ACCESS=$(stat -c "%a" $KEYFILE)
if [[ ${KEYFILE_OWNER} -ne 0 ]]; then
echo "The keyfile (${KEYFILE}) is owned by UID ${KEYFILE_OWNER}, it should be 0 (root)."
exit 2
fi
if [[ ${KEYFILE_ACCESS} -ne 600 ]]; then
echo "The keyfile (${KEYFILE}) has permissions ${KEYFILE_ACCESS}, it should be 600 (rw-------)."
exit 2
fi
VERB="$1"
shift
function drop_snap {
SNAP="${1}"
for S in "${SNAP}/"*
do
btrfs subvolume delete "$S"
done
rmdir "${SNAP}"
}
case "$VERB" in
(snap*)
T="$(date +%Y-%m-%d.%H%M%S)"
SNAP="${SNAP_DIR}/${T}"
echo "Creating snapshot ${SNAP}"
mkdir "${SNAP}" || die "failed to mkdir ${SNAP}"
cd "${SUBVOL_DIR}" || die "failed to cd ${SUBVOL_DIR}"
for SUB in ^${SUBVOL_IGNORE_PREFIX}*
do
btrfs subvolume snapshot -r "${SUB}" "${SNAP}/${SUB}" || die "failed to btrfs snap ${SUB}"
done
;;
(list)
cd "${SNAP_DIR}"
for SNAP in *
do
if [[ -f "${SNAP}/streamed" ]]; then
printf "S"
else
printf " "
fi
done
echo
echo "S = streamed to storage"
echo "R = scheduled for removal"
;;
(drop)
SNAP="${SNAP_DIR}/${1}"
if [[ ! -d ${SNAP} ]]; then
echo "Snapshot ${1} does not exist"
exit 3
fi
echo "Dropping $SNAP"
drop_snap "$SNAP"
;;
(clean*)
echo ">>> gc"
;;
(stream)
echo ">>> stream $1"
;;
(*)
echo "Unknown verb: ${VERB}"
exit 3
;;
esac