gcfs.sh
· 3.8 KiB · Bash
Raw
#!/bin/bash
set -euo pipefail
source .env
GOCRYPTFS_PASSFILE=${GOCRYPTFS_ROOT_DIR:-~/.keys/gocrypts}/gocryptfs.key
GOCRYPTFS_OUTPUT_MOUNT=${GOCRYPTFS_MOUNT_ROOT:-~/.mnt}
gcfs-mount () {
if [ "$1" == "data" ]; then
GOCRYPTFS_CONFIG="${GOCRYPTFS_ROOT_DIR}/data-cipher/gocryptfs.conf"
if [ -v "$2" ]; then
GOCRYPTFS_VAULT="${HOME}/.${2}"
if ! [ -f "${HOME}/.mnt/${2}" ]; then
mkdir -p "${HOME}/.mnt/${2}"
GOCRYPTFS_VOLUME="${GOCRYPTFS_OUTPUT_MOUNT}/${2}"
fi
else
GOCRYPTFS_VAULT=~/.data
if ! [ -f ~/.mnt/data ]; then
mkdir -p ~/.mnt/data
GOCRYPTFS_VOLUME="${GOCRYPTFS_OUTPUT_MOUNT}/data"
fi
fi
fi
if [ "$1" == "classified" ]; then
GOCRYPTFS_CONFIG="${GOCRYPTFS_ROOT_DIR}/secret-cipher/gocryptfs.conf"
if [ -v "$2" ]; then
GOCRYPTFS_VAULT_ARG="${HOME}/Documents/.${2}"
if ! [ -f "${HOME}/.mnt/${2}" ]; then
mkdir -p "${HOME}/.mnt/${2}"
GOCRYPTFS_VOLUME="${GOCRYPTFS_OUTPUT_MOUNT}/${2}"
fi
else
GOCRYPTFS_VAULT_ARG=~/Documents/.secret
if ! [ -f ~/.mnt/classified ]; then
mkdir -p ~/.mnt/classified
GOCRYPTFS_VOLUME="${GOCRYPTFS_OUTPUT_MOUNT}/classified"
fi
fi
fi
if [ "$1" == "works-in-progress" ]; then
GOCRYPTFS_CONFIG="${GOCRYPTFS_ROOT_DIR}/wip-cipher/gocryptfs.conf"
if [ -v "$2" ]; then
GOCRYPTFS_VAULT="${HOME}/Portfolio/.${2}"
if ! [ -f "${HOME}/.mnt/${2}" ]; then
mkdir -p "${HOME}/.mnt/${2}"
GOCRYPTFS_VOLUME="${GOCRYPTFS_OUTPUT_MOUNT}/${2}"
fi
else
GOCRYPTFS_VAULT=~/Portfolio/.wip
if ! [ -f ~/.mnt/works-in-progress ]; then
mkdir -p ~/.mnt/works-in-progress
GOCRYPTFS_VOLUME="${GOCRYPTFS_OUTPUT_MOUNT}/works-in-progress"
fi
fi
fi
gocryptfs -config "$GOCRYPTFS_CONFIG" -passfile "$GOCRYPTFS_PASSFILE" "$GOCRYPTFS_VAULT" "$GOCRYPTFS_VOLUME"
}
gcfs-umount () {
if [ -v "$1" ]; then
GOCRYPTFS_PLAIN="${GOCRYPTFS_OUTPUT_MOUNT}/${1}"
else
exit 1
fi
fusermount -u "$GOCRYPTFS_PLAIN"
}
# @NOTE below is commented out as it assumes a specific ZFS data set and pool structure
# znap () {
# DATE_OF_ZFS_SNAPSHOT=$(date '+%Y%m%d%H%M%S')
#
# if [ -z "$1" ]; then
# exit 1
# elif [ "$1" == "essential" ]; then
# sudo zfs snapshot "zroot${HOME}@${DATE_OF_ZFS_SNAPSHOT}"
# sudo zfs snapshot "zroot${HOME}/.config@${DATE_OF_ZFS_SNAPSHOT}"
# sudo zfs snapshot "zroot${HOME}/.var/app@${DATE_OF_ZFS_SNAPSHOT}"
# sudo zfs snapshot "zroot${HOME}/.local/share/flatpak@${DATE_OF_ZFS_SNAPSHOT}"
# sudo zfs snapshot "zroot/var/lib/nfs@${DATE_OF_ZFS_SNAPSHOT}"
# sudo zfs snapshot "zroot/var/lib/NetworkManager@${DATE_OF_ZFS_SNAPSHOT}"
# sudo zfs snapshot "zroot/keystore@${DATE_OF_ZFS_SNAPSHOT}"
# sudo zfs snapshot "zroot/srv@${DATE_OF_ZFS_SNAPSHOT}"
# sudo zfs snapshot "zroot/var/games@${DATE_OF_ZFS_SNAPSHOT}"
# sudo zfs snapshot "zroot/var/mail@${DATE_OF_ZFS_SNAPSHOT}"
# sudo zfs snapshot "zroot/var/www@${DATE_OF_ZFS_SNAPSHOT}"
# sudo zfs snapshot "zroot/usr/local@${DATE_OF_ZFS_SNAPSHOT}"
# sudo zfs snapshot "zroot/var/lib/AccountsService@${DATE_OF_ZFS_SNAPSHOT}"
# sudo zfs snapshot -r "medialib@${DATE_OF_ZFS_SNAPSHOT}"
# zfs list -t snapshot
# # @NOTE: reccommended w option for zfs send
# else
# sudo zfs snapshot "${1}@${DATE_OF_ZFS_SNAPSHOT}"
# zfs list -t snapshot | grep "$1"
# fi
# }
# @NOTE below only useful if managing ZFS file systems
# zeject-pool () {
# if [ -z "$1" ]; then
# exit 1
# fi
#
# zpool export "$1"
# }
| 1 | #!/bin/bash |
| 2 | set -euo pipefail |
| 3 | |
| 4 | source .env |
| 5 | GOCRYPTFS_PASSFILE=${GOCRYPTFS_ROOT_DIR:-~/.keys/gocrypts}/gocryptfs.key |
| 6 | GOCRYPTFS_OUTPUT_MOUNT=${GOCRYPTFS_MOUNT_ROOT:-~/.mnt} |
| 7 | |
| 8 | gcfs-mount () { |
| 9 | if [ "$1" == "data" ]; then |
| 10 | GOCRYPTFS_CONFIG="${GOCRYPTFS_ROOT_DIR}/data-cipher/gocryptfs.conf" |
| 11 | |
| 12 | if [ -v "$2" ]; then |
| 13 | GOCRYPTFS_VAULT="${HOME}/.${2}" |
| 14 | |
| 15 | |
| 16 | if ! [ -f "${HOME}/.mnt/${2}" ]; then |
| 17 | mkdir -p "${HOME}/.mnt/${2}" |
| 18 | GOCRYPTFS_VOLUME="${GOCRYPTFS_OUTPUT_MOUNT}/${2}" |
| 19 | fi |
| 20 | else |
| 21 | GOCRYPTFS_VAULT=~/.data |
| 22 | |
| 23 | if ! [ -f ~/.mnt/data ]; then |
| 24 | mkdir -p ~/.mnt/data |
| 25 | GOCRYPTFS_VOLUME="${GOCRYPTFS_OUTPUT_MOUNT}/data" |
| 26 | fi |
| 27 | fi |
| 28 | fi |
| 29 | |
| 30 | if [ "$1" == "classified" ]; then |
| 31 | GOCRYPTFS_CONFIG="${GOCRYPTFS_ROOT_DIR}/secret-cipher/gocryptfs.conf" |
| 32 | |
| 33 | if [ -v "$2" ]; then |
| 34 | GOCRYPTFS_VAULT_ARG="${HOME}/Documents/.${2}" |
| 35 | |
| 36 | if ! [ -f "${HOME}/.mnt/${2}" ]; then |
| 37 | mkdir -p "${HOME}/.mnt/${2}" |
| 38 | GOCRYPTFS_VOLUME="${GOCRYPTFS_OUTPUT_MOUNT}/${2}" |
| 39 | fi |
| 40 | else |
| 41 | GOCRYPTFS_VAULT_ARG=~/Documents/.secret |
| 42 | |
| 43 | if ! [ -f ~/.mnt/classified ]; then |
| 44 | mkdir -p ~/.mnt/classified |
| 45 | GOCRYPTFS_VOLUME="${GOCRYPTFS_OUTPUT_MOUNT}/classified" |
| 46 | fi |
| 47 | fi |
| 48 | fi |
| 49 | |
| 50 | if [ "$1" == "works-in-progress" ]; then |
| 51 | GOCRYPTFS_CONFIG="${GOCRYPTFS_ROOT_DIR}/wip-cipher/gocryptfs.conf" |
| 52 | |
| 53 | if [ -v "$2" ]; then |
| 54 | GOCRYPTFS_VAULT="${HOME}/Portfolio/.${2}" |
| 55 | |
| 56 | if ! [ -f "${HOME}/.mnt/${2}" ]; then |
| 57 | mkdir -p "${HOME}/.mnt/${2}" |
| 58 | GOCRYPTFS_VOLUME="${GOCRYPTFS_OUTPUT_MOUNT}/${2}" |
| 59 | fi |
| 60 | else |
| 61 | GOCRYPTFS_VAULT=~/Portfolio/.wip |
| 62 | |
| 63 | if ! [ -f ~/.mnt/works-in-progress ]; then |
| 64 | mkdir -p ~/.mnt/works-in-progress |
| 65 | GOCRYPTFS_VOLUME="${GOCRYPTFS_OUTPUT_MOUNT}/works-in-progress" |
| 66 | fi |
| 67 | fi |
| 68 | fi |
| 69 | |
| 70 | gocryptfs -config "$GOCRYPTFS_CONFIG" -passfile "$GOCRYPTFS_PASSFILE" "$GOCRYPTFS_VAULT" "$GOCRYPTFS_VOLUME" |
| 71 | } |
| 72 | |
| 73 | gcfs-umount () { |
| 74 | if [ -v "$1" ]; then |
| 75 | GOCRYPTFS_PLAIN="${GOCRYPTFS_OUTPUT_MOUNT}/${1}" |
| 76 | else |
| 77 | exit 1 |
| 78 | fi |
| 79 | |
| 80 | fusermount -u "$GOCRYPTFS_PLAIN" |
| 81 | } |
| 82 | |
| 83 | # @NOTE below is commented out as it assumes a specific ZFS data set and pool structure |
| 84 | # znap () { |
| 85 | # DATE_OF_ZFS_SNAPSHOT=$(date '+%Y%m%d%H%M%S') |
| 86 | # |
| 87 | # if [ -z "$1" ]; then |
| 88 | # exit 1 |
| 89 | # elif [ "$1" == "essential" ]; then |
| 90 | # sudo zfs snapshot "zroot${HOME}@${DATE_OF_ZFS_SNAPSHOT}" |
| 91 | # sudo zfs snapshot "zroot${HOME}/.config@${DATE_OF_ZFS_SNAPSHOT}" |
| 92 | # sudo zfs snapshot "zroot${HOME}/.var/app@${DATE_OF_ZFS_SNAPSHOT}" |
| 93 | # sudo zfs snapshot "zroot${HOME}/.local/share/flatpak@${DATE_OF_ZFS_SNAPSHOT}" |
| 94 | # sudo zfs snapshot "zroot/var/lib/nfs@${DATE_OF_ZFS_SNAPSHOT}" |
| 95 | # sudo zfs snapshot "zroot/var/lib/NetworkManager@${DATE_OF_ZFS_SNAPSHOT}" |
| 96 | # sudo zfs snapshot "zroot/keystore@${DATE_OF_ZFS_SNAPSHOT}" |
| 97 | # sudo zfs snapshot "zroot/srv@${DATE_OF_ZFS_SNAPSHOT}" |
| 98 | # sudo zfs snapshot "zroot/var/games@${DATE_OF_ZFS_SNAPSHOT}" |
| 99 | # sudo zfs snapshot "zroot/var/mail@${DATE_OF_ZFS_SNAPSHOT}" |
| 100 | # sudo zfs snapshot "zroot/var/www@${DATE_OF_ZFS_SNAPSHOT}" |
| 101 | # sudo zfs snapshot "zroot/usr/local@${DATE_OF_ZFS_SNAPSHOT}" |
| 102 | # sudo zfs snapshot "zroot/var/lib/AccountsService@${DATE_OF_ZFS_SNAPSHOT}" |
| 103 | # sudo zfs snapshot -r "medialib@${DATE_OF_ZFS_SNAPSHOT}" |
| 104 | # zfs list -t snapshot |
| 105 | # # @NOTE: reccommended w option for zfs send |
| 106 | # else |
| 107 | # sudo zfs snapshot "${1}@${DATE_OF_ZFS_SNAPSHOT}" |
| 108 | # zfs list -t snapshot | grep "$1" |
| 109 | # fi |
| 110 | # } |
| 111 | |
| 112 | # @NOTE below only useful if managing ZFS file systems |
| 113 | # zeject-pool () { |
| 114 | # if [ -z "$1" ]; then |
| 115 | # exit 1 |
| 116 | # fi |
| 117 | # |
| 118 | # zpool export "$1" |
| 119 | # } |