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