Renamed media drive script--rewrote to account for different cases in handling media drive
This commit is contained in:
@@ -1,52 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
# @TODO: Implement more soft-coding and interactivity to this script
|
|
||||||
|
|
||||||
sudo zpool create \
|
|
||||||
-o ashift=12 \
|
|
||||||
-o autotrim=on \
|
|
||||||
-o compatibility=openzfs-2.1-linux \
|
|
||||||
-O encryption=on \
|
|
||||||
-O keylocation=file:///etc/zfs/keys/zroot.key \
|
|
||||||
-O keyformat=passphrase \
|
|
||||||
-O acltype=posixacl \
|
|
||||||
-O xattr=sa \
|
|
||||||
-O dnodesize=auto \
|
|
||||||
-O compression=zstd-3 \
|
|
||||||
-O normalization=formD \
|
|
||||||
-O relatime=on \
|
|
||||||
-O canmount=off \
|
|
||||||
-O mountpoint=none \
|
|
||||||
"$2" \
|
|
||||||
/dev/disk/by-id/"${1}"-part1
|
|
||||||
|
|
||||||
DATASET=("${HOME}/Documents/.calibre" "${2}/LITERATURE")
|
|
||||||
mkdir -p "${DATASET[0]}"
|
|
||||||
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
|
|
||||||
|
|
||||||
DATASET=("${HOME}/Videos" "${2}/FILM")
|
|
||||||
mkdir -p "${DATASET[0]}"
|
|
||||||
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
|
|
||||||
|
|
||||||
DATASET=("${HOME}/.var/app/com.valvesoftware.Steam" "${2}/STEAMGAMES")
|
|
||||||
mkdir -p "${DATASET[0]}"
|
|
||||||
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
|
|
||||||
|
|
||||||
DATASET=("${HOME}/.var/app/org.libretro.RetroArch" "${2}/RARCHGAMES")
|
|
||||||
mkdir -p "${DATASET[0]}"
|
|
||||||
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
|
|
||||||
|
|
||||||
DATASET=("${HOME}/Games" "${2}/GAMES")
|
|
||||||
mkdir -p "${DATASET[0]}"
|
|
||||||
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
|
|
||||||
ln -s "${HOME}/.var/app/com.valvesoftware.Steam" "${DATASET[0]}/Steam"
|
|
||||||
ln -s "${HOME}/.var/app/org.libretro.RetroArch" "${DATASET[0]}/libRetro"
|
|
||||||
|
|
||||||
DATASET=("${HOME}/.var/app/org.libretro.RetroArch" "${2}/RARCHGAMES")
|
|
||||||
mkdir -p "${DATASET[0]}"
|
|
||||||
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
|
|
||||||
|
|
||||||
DATASET=("${HOME}/.XXX" "${2}/XXX")
|
|
||||||
mkdir -p "${DATASET[0]}"
|
|
||||||
sudo zfs create -o keylocation=prompt -o keyformat=passphrase -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
|
|
110
zfs/zfs-media-drive.sh
Normal file
110
zfs/zfs-media-drive.sh
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# @TODO: Implement more soft-coding and interactivity to this script
|
||||||
|
ZFS_KEY_LOC="file:///etc/zfs/keys/zroot.key"
|
||||||
|
ZFS_COMPAT="openzfs-2.1-linux"
|
||||||
|
ZFS_KEY_FORMAT="passphrase"
|
||||||
|
ZFS_COMPRESSION="zstd-3"
|
||||||
|
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$3" ] && [ "$1" == "init" ]; then
|
||||||
|
ZFS_POOL_NAME="media"
|
||||||
|
else
|
||||||
|
if [ "$1" == "init" ]; then
|
||||||
|
ZFS_POOL_NAME="$3"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$2" ] && [ "$1" == "init" ]; then
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
if [ "$1" == "init" ]; then
|
||||||
|
ZFS_TARGET_DRIVE="$2" # @NOTE typically, device name will be disk by-id and end with "-part1" given how it is to be used with other scripts
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "init" ]; then
|
||||||
|
sudo zpool create \
|
||||||
|
-o ashift=12 \
|
||||||
|
-o autotrim=on \
|
||||||
|
-o compatibility="$ZFS_COMPAT" \
|
||||||
|
-O encryption=on \
|
||||||
|
-O keylocation="$ZFS_KEY_LOC" \
|
||||||
|
-O keyformat="$ZFS_KEY_FORMAT" \
|
||||||
|
-O acltype=posixacl \
|
||||||
|
-O xattr=sa \
|
||||||
|
-O dnodesize=auto \
|
||||||
|
-O compression="$ZFS_COMPRESSION" \
|
||||||
|
-O normalization=formD \
|
||||||
|
-O relatime=on \
|
||||||
|
-O canmount=off \
|
||||||
|
-O mountpoint=none \
|
||||||
|
"$ZFS_POOL_NAME" \
|
||||||
|
/dev/disk/by-id/"${ZFS_TARGET_DRIVE}"
|
||||||
|
elif [ "$1" == "ext" ]; then
|
||||||
|
if [ -z "$2" ]; then
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
ZFS_POOL_NAME="$2"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ZFS_DATASET_OPTS="$3"
|
||||||
|
|
||||||
|
shift 3
|
||||||
|
|
||||||
|
# @NOTE from this point on, @ must be list of arrays each containing two strings
|
||||||
|
for i in "$@"; do
|
||||||
|
mkdir -p "${i[0]}"
|
||||||
|
sudo zfs create "${ZFS_DATASET_OPTS}" -o mountpoint="${HOME}${i[0]}" "${ZFS_POOL_NAME}/${i[1]}"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$4" ] && [ "$1" == "init" ]; then
|
||||||
|
DATASET=("${HOME}/Documents/.calibre" "${ZFS_POOL_NAME}/LITERATURE")
|
||||||
|
mkdir -p "${DATASET[0]}"
|
||||||
|
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
|
||||||
|
|
||||||
|
DATASET=("${HOME}/Videos" "${ZFS_POOL_NAME}/FILM")
|
||||||
|
mkdir -p "${DATASET[0]}"
|
||||||
|
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
|
||||||
|
|
||||||
|
DATASET=("${HOME}/.var/app/com.valvesoftware.Steam" "${ZFS_POOL_NAME}/STEAMGAMES")
|
||||||
|
mkdir -p "${DATASET[0]}"
|
||||||
|
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
|
||||||
|
|
||||||
|
DATASET=("${HOME}/.var/app/org.libretro.RetroArch" "${ZFS_POOL_NAME}/RARCHGAMES")
|
||||||
|
mkdir -p "${DATASET[0]}"
|
||||||
|
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
|
||||||
|
|
||||||
|
DATASET=("${HOME}/Games" "${ZFS_POOL_NAME}/GAMES")
|
||||||
|
mkdir -p "${DATASET[0]}"
|
||||||
|
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
|
||||||
|
ln -s "${HOME}/.var/app/com.valvesoftware.Steam" "${DATASET[0]}/Steam"
|
||||||
|
ln -s "${HOME}/.var/app/org.libretro.RetroArch" "${DATASET[0]}/libRetro"
|
||||||
|
|
||||||
|
DATASET=("${HOME}/.var/app/org.libretro.RetroArch" "${ZFS_POOL_NAME}/RARCHGAMES")
|
||||||
|
mkdir -p "${DATASET[0]}"
|
||||||
|
sudo zfs create -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
|
||||||
|
|
||||||
|
DATASET=("${HOME}/.XXX" "${ZFS_POOL_NAME}/XXX")
|
||||||
|
mkdir -p "${DATASET[0]}"
|
||||||
|
sudo zfs create -o keylocation=prompt -o keyformat=passphrase -o mountpoint="${DATASET[0]}" "${DATASET[1]}"
|
||||||
|
else
|
||||||
|
if [ "$1" == "init" ]; then
|
||||||
|
ZFS_DATASET_OPTS="$4"
|
||||||
|
|
||||||
|
shift 4
|
||||||
|
|
||||||
|
# @NOTE from this point on, @ must be list of arrays each containing two strings
|
||||||
|
for i in "$@"; do
|
||||||
|
mkdir -p "${i[0]}"
|
||||||
|
sudo zfs create "${ZFS_DATASET_OPTS}" -o mountpoint="${HOME}${i[0]}" "${ZFS_POOL_NAME}/${i[1]}"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
Reference in New Issue
Block a user