#! /bin/zsh TIMESTAMP=($(basename "$(pwd)")) OUTDIR="$1" KEYFILE="$2" function die { >&2 echo "$2" exit $1 } [[ "$0" != "./unpack.sh" ]] && die 1 "This can only be executed from the snapshot directory itself." [[ ! -d "$OUTDIR" ]] && die 1 "The first argument must be a directory to unpack subvolumes into." [[ ! -f "$KEYFILE" ]] && die 1 "The second argument must be a readable keyfile." ./check-integrity.sh || die 2 "This snapshot failed integrity checks." ### end of checks for ARCHIVE in *btrfs.zst.aes do openssl enc -d -aes-256-cbc -pbkdf2 -salt -pass "file:$KEYFILE" < "$ARCHIVE" | zstd -d | btrfs receive "$OUTDIR" || die 3 "Failed to unpack subvolume." SUBVOL_NAME=${ARCHIVE%%.btrfs.zst.aes} mv "${OUTDIR}/${SUBVOL_NAME}" "${OUTDIR}/${SUBVOL_NAME}.${TIMESTAMP[1]}" || die 4 "Failed to rename subvolume." done