Ostatnio aktywny 1 month ago

Bash functions to have at initialization of shell session

Rewizja ac5464774f51a6cd717441997bbc863db8296b40

gcfs.sh Surowy
1#!/bin/bash
2set -euo pipefail
3
4source .env
5GOCRYPTFS_PASSFILE=${GOCRYPTFS_ROOT_DIR:-~/.keys/gocrypts}/gocryptfs.key
6GOCRYPTFS_OUTPUT_MOUNT=${GOCRYPTFS_MOUNT_ROOT:-~/.mnt}
7
8gcfs-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
73gcfs-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# }