Improved scripts to create encrypted devices

This commit is contained in:
Michele Cereda
2022-06-08 16:47:09 +02:00
parent ab49330fce
commit 825d6b2274
2 changed files with 15 additions and 6 deletions

View File

@@ -1,8 +1,11 @@
#!/usr/bin/env sh #!/usr/bin/env sh
[[ -v DEBUG ]] && set -x
: ${DEVICE:?not set} : ${DEVICE:?not set}
: ${LABEL:?not set} : ${LABEL:?not set}
: "${MAPPER_NAME:=${LABEL// /}}"
: "${MOUNT_OPTIONS:=compress-force=zstd}" : "${MOUNT_OPTIONS:=compress-force=zstd}"
: "${MOUNT_POINT:=/mnt/$LABEL}" : "${MOUNT_POINT:=/mnt/$LABEL}"
: "${USERNAME:=root}" : "${USERNAME:=root}"
@@ -13,19 +16,21 @@
[[ -b "$DEVICE" ]] || (echo "${DEVICE} not found" >&2 && exit 1) [[ -b "$DEVICE" ]] || (echo "${DEVICE} not found" >&2 && exit 1)
cryptsetup luksFormat "$DEVICE" cryptsetup luksFormat "$DEVICE"
cryptsetup open "$DEVICE" "$LABEL" cryptsetup open "$DEVICE" "$MAPPER_NAME"
mkfs.btrfs --label "$LABEL" "/dev/mapper/${LABEL}" mkfs.btrfs -f --label "$LABEL" "/dev/mapper/${MAPPER_NAME}"
mkdir -p "$MOUNT_POINT" mkdir -p "$MOUNT_POINT"
mount -t btrfs -o "$MOUNT_OPTIONS" "/dev/mapper/${LABEL}" "$MOUNT_POINT" mount -t btrfs -o "$MOUNT_OPTIONS" "/dev/mapper/${MAPPER_NAME}" "$MOUNT_POINT"
btrfs subvolume create "$MOUNT_POINT/.snapshots" btrfs subvolume create "$MOUNT_POINT/.snapshots"
btrfs subvolume create "$MOUNT_POINT/data" btrfs subvolume create "$MOUNT_POINT/data"
chown "$USER":"$USER" "$MOUNT_POINT/data" chown "$USERNAME":"$GROUPNAME" "$MOUNT_POINT/data"
if [[ "$CLOSE_WHEN_DONE" ]] if [[ "$CLOSE_WHEN_DONE" == false ]]
then then
umount "/mnt/${LABEL}" umount "/mnt/${LABEL}"
cryptsetup close "$DEVICE" cryptsetup close "/dev/mapper/${MAPPER_NAME}"
fi fi
[[ -v "$DEBUG" ]] && set +x

View File

@@ -1,5 +1,7 @@
#!/usr/bin/env sh #!/usr/bin/env sh
[[ -v DEBUG ]] && set -x
: ${DEVICE:?not set} : ${DEVICE:?not set}
: ${POOL_NAME:?not set} : ${POOL_NAME:?not set}
@@ -24,3 +26,5 @@ zfs create "${POOL_NAME}/${DATASET_NAME}"
chown "$USERNAME":"$GROUPNAME" "${MOUNT_POINT}/${DATASET_NAME}" chown "$USERNAME":"$GROUPNAME" "${MOUNT_POINT}/${DATASET_NAME}"
[[ "$UNMOUNT_WHEN_DONE" ]] && zfs unmount "${POOL_NAME}/${DATASET_NAME}" [[ "$UNMOUNT_WHEN_DONE" ]] && zfs unmount "${POOL_NAME}/${DATASET_NAME}"
[[ -v DEBUG ]] && set +x