install.fairie/home/dot_local/bin/executable_rclone-mount

108 lines
3 KiB
Text
Raw Normal View History

2023-12-08 17:33:00 -08:00
#!/usr/bin/env bash
# @file RClone Mount
# @brief Helper utility to aid with mounting RClone S3 buckets to the file system
# @description
# This script is a helper utility to assist a system service that ensures various
# RClone S3 mounts are mounted properly. For more information, take a look at the
# RClone files stored in `~/.config/rclone`.
### Variables
TYPE="$1"
USER="$2"
MOUNT="$3"
2023-08-30 14:01:07 -07:00
### Mount variables
if [ "$TYPE" = 'user' ]; then
2023-12-09 04:42:09 -08:00
MOUNT_REF="User-$USER"
2023-08-30 14:01:07 -07:00
MOUNT_LOWERCASE="user/$USER-$MOUNT"
else
MOUNT_REF="$MOUNT"
MOUNT_LOWERCASE="$(echo "$MOUNT" | tr "[:upper:]" "[:lower:]")"
fi
### Path definitions
if [ "$TYPE" = 'user' ]; then
if [ -d /Applications ] && [ -d /System ]; then
USER_FOLDER='Users'
else
USER_FOLDER='home'
fi
2024-04-01 20:09:30 -07:00
CACHE_FOLDER="/var/cache/rclone/$MOUNT"
CONFIG_FOLDER="/$USER_FOLDER/$USER/.config/rclone"
2024-04-01 20:09:30 -07:00
LOG_FOLDER="/var/log/rclone"
LOG_FILE="$LOG_FOLDER/$MOUNT_LOWERCASE.log"
if [ -d /Applications ] && [ -d /System ]; then
MNT_FOLDER='Volumes'
else
MNT_FOLDER='mnt'
fi
MOUNT_PATH="/$MNT_FOLDER/$MOUNT"
else
CACHE_FOLDER="/var/cache/rclone/$MOUNT"
CONFIG_FOLDER="/etc"
LOG_FOLDER="/var/log/rclone"
2024-04-01 20:09:30 -07:00
LOG_FILE="$LOG_FOLDER/$MOUNT_LOWERCASE.log"
if [ -d /Applications ] && [ -d /System ]; then
MNT_FOLDER='Volumes'
else
MNT_FOLDER='mnt'
fi
MOUNT_PATH="/$MNT_FOLDER/$MOUNT"
fi
### Ensure folders exist
for FOLDER in "$CACHE_FOLDER" "$CONFIG_FOLDER" "$LOG_FOLDER" "$MOUNT_PATH"; do
if [ ! -d "$FOLDER" ]; then
2023-12-09 04:42:09 -08:00
mkdir -p "$FOLDER"
chmod 750 "$FOLDER"
chown -f "$USER:rclone" "$FOLDER"
fi
done
### Define rcloneignore location
RCLONE_IGNORE="$CONFIG_FOLDER/rcloneignore"
if [ ! -f "$RCLONE_IGNORE" ] && [ -f "/etc/rcloneignore" ]; then
RCLONE_IGNORE='/etc/rcloneignore'
fi
chown -f "$USER:rclone" "$CONFIG_FOLDER/rclone.conf"
chmod -f 600 "$CONFIG_FOLDER/rclone.conf"
2023-12-09 04:42:09 -08:00
### Mount
2023-07-16 03:10:04 -07:00
unset AWS_CA_BUNDLE
export PATH="$PATH:/usr/local/bin:/usr/bin"
2023-07-30 22:31:48 -07:00
# TODO: Only launch with --rc-web-gui if the servers hostname is the {{ .kubernetesHost }}
# TODO: Add more secure authentication method
rclone --config "$CONFIG_FOLDER/rclone.conf" \
mount \
2023-07-30 22:31:48 -07:00
--allow-other \
--buffer-size 4G \
2024-04-01 20:09:30 -07:00
--bwlimit 200M \
2023-08-29 19:55:40 -07:00
--cache-chunk-path "$CACHE_FOLDER/$MOUNT_REF-chunks" \
--cache-db-path "$CACHE_FOLDER/$MOUNT_REF-db" \
--cache-dir "$CACHE_FOLDER/$MOUNT_REF-vfs" \
2024-04-01 20:09:30 -07:00
--cache-info-age 1m \
2023-08-29 19:55:40 -07:00
--cache-tmp-upload-path "$CACHE_FOLDER/$MOUNT_REF-upload" \
2023-07-30 22:33:06 -07:00
--cache-workers 8 \
--cache-writes \
2023-07-30 22:33:06 -07:00
--checkers 16 \
2024-04-01 20:09:30 -07:00
--dir-cache-time 30s \
2023-07-30 22:31:48 -07:00
--drive-use-trash \
2023-07-30 22:33:06 -07:00
--exclude-from "$RCLONE_IGNORE" \
--log-file "$LOG_FILE" \
2023-07-30 22:42:42 -07:00
--log-level INFO \
--no-modtime \
2023-07-30 22:31:48 -07:00
--noapplexattr \
2023-07-30 22:54:25 -07:00
--poll-interval 15s \
2023-07-30 22:33:06 -07:00
--stats 0 \
2023-07-30 22:31:48 -07:00
--vfs-cache-max-age 1000h \
--vfs-cache-max-size 5G \
--vfs-cache-mode full \
2024-04-01 20:09:30 -07:00
--vfs-cache-poll-interval 15s \
2023-07-30 22:31:48 -07:00
--vfs-fast-fingerprint \
--vfs-read-ahead 128M \
--vfs-read-chunk-size 16M \
--vfs-read-chunk-size-limit 128M \
2023-08-29 19:55:40 -07:00
--volname "$MOUNT_REF" \
"$MOUNT_REF":"$MOUNT_LOWERCASE" "$MOUNT_PATH"