gcfs.sh
· 3.9 KiB · Bash
Brut
#!/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 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
}
zclean-aptsnaps () {
zfs list -t snapshot | grep 'apt-' | sed 's| .*$||g' | head -n -5 | xargs -d '\n' -I {} sudo zfs destroy {}
}
# @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 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 | zclean-aptsnaps () { |
| 112 | zfs list -t snapshot | grep 'apt-' | sed 's| .*$||g' | head -n -5 | xargs -d '\n' -I {} sudo zfs destroy {} |
| 113 | } |
| 114 | |
| 115 | # @NOTE below only useful if managing ZFS file systems |
| 116 | zeject-pool () { |
| 117 | if [ -z "$1" ]; then |
| 118 | exit 1 |
| 119 | fi |
| 120 | |
| 121 | zpool export "$1" |
| 122 | } |