66 lines
1.1 KiB
Plaintext
66 lines
1.1 KiB
Plaintext
![]() |
#!/bin/sh
|
||
|
|
||
|
if [ $# -ne 1 ] && [ $# -ne 2 ]; then
|
||
|
echo
|
||
|
cat<<EOF
|
||
|
Usage: $0 FOLDERS...
|
||
|
$0 -u
|
||
|
|
||
|
Mount encfs-encrypted FOLDERS.
|
||
|
With -u, unmount all encfs-mounted partitions.
|
||
|
EOF
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
check() {
|
||
|
for i ; do
|
||
|
if ! command -v $i >/dev/null 2>&1; then
|
||
|
echo "'$i' not found in PATH. Exiting." >&2
|
||
|
exit 1
|
||
|
fi
|
||
|
done
|
||
|
}
|
||
|
|
||
|
mount() {
|
||
|
check realpath encfs
|
||
|
SOURCE="$(realpath "$1")"
|
||
|
MOUNTPOINT="${SOURCE}_decrypted"
|
||
|
mkdir -p "$MOUNTPOINT"
|
||
|
if [ -z "$PASS" ]; then
|
||
|
encfs "$SOURCE" "$MOUNTPOINT"
|
||
|
else
|
||
|
echo "$PASS" | encfs --stdinpass "$SOURCE" "$MOUNTPOINT"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
unmount() {
|
||
|
check findmnt fusermount dataindex
|
||
|
|
||
|
while IFS= read -r i; do
|
||
|
## Generate index on exit.
|
||
|
folder=$(basename $(dirname "$i"))
|
||
|
mkdir -p ~/personal/index/"$folder"
|
||
|
dataindex "$i" | gpg --encrypt --recipient mail@ambrevar.xyz \
|
||
|
--output - > ~/personal/index/"$folder"/"$(basename "$i")".index.gpg
|
||
|
unset folder
|
||
|
fusermount -u "$i"
|
||
|
rmdir "$i"
|
||
|
done <<EOF
|
||
|
$(findmnt --noheadings --output=target encfs)
|
||
|
EOF
|
||
|
}
|
||
|
|
||
|
if [ "$1" = "-u" ]; then
|
||
|
unmount
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
if [ $# -gt 1 ]; then
|
||
|
echo -n "EncFS Password: "
|
||
|
read PASS
|
||
|
fi
|
||
|
|
||
|
for i; do
|
||
|
mount "$i"
|
||
|
done
|