Files
dao_hades/scripts/always/mount.sh
Jamie Albert e5d26bd32b Lazy commit
2025-11-06 02:30:35 +00:00

54 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# ---
# shellcheck disable=1091
# ---
. /usr/local/share/dao/config/dao.conf
CHECK_INTERVAL=30
BASE_RCLONE_OPTS=(
--vfs-cache-mode writes
--cache-dir /tmp/rclone-cache
--dir-cache-time 5m
--poll-interval 1m
--timeout 1h
--low-level-retries 10
--retries 3
)
CRYPT_RCLONE_OPTS=(
--buffer-size 64M
--transfers 4
)
# Mount configurations: remote:mount_point:name:is_crypt
MOUNTS=(
"koofr:${DAO_STORAGE_DIR}/koofr:koofr:false"
"koofr_vault:${DAO_STORAGE_DIR}/vault:vault:true"
)
ensure_mount() {
declare remote="$1" mount_point="$2" mount_name="$3" is_crypt="$4"
# Return early if already mounted
findmnt -rn "$mount_point" >/dev/null 2>&1 && return 0
declare opts_array=("${BASE_RCLONE_OPTS[@]}")
[[ "$is_crypt" == "true" ]] && opts_array+=("${CRYPT_RCLONE_OPTS[@]}")
/usr/bin/rclone mount "$remote:" "$mount_point" "${opts_array[@]}" &
}
main() {
while true; do
for mount_config in "${MOUNTS[@]}"; do
IFS=':' read -r remote mount_point mount_name is_crypt <<<"$mount_config"
ensure_mount "$remote" "$mount_point" "$mount_name" "$is_crypt"
done
sleep "$CHECK_INTERVAL"
done
}
main "$@"