From 4f2a9e67ebe10df39d47ad3e49678a0bb46f0ced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20K=C3=B6rber?= Date: Sat, 30 Nov 2024 21:30:44 +0100 Subject: [PATCH] Add script to sync garmin --- scripts/garmin.sh | 48 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 scripts/garmin.sh diff --git a/scripts/garmin.sh b/scripts/garmin.sh new file mode 100755 index 0000000..9c760d4 --- /dev/null +++ b/scripts/garmin.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +set -o nounset + +gid=$(id -g) +uid=$(id -u) + +DEV=/dev/disk/by-label/GARMIN +MOUNTPOINT=/mnt +MOUNTOPTS="uid=${uid},gid=${gid}" + +SYNC_FOLDERS=( + Activity +) + +RSYNCOPTS=( + --verbose + --recursive + --checksum + --itemize-changes +) + +if [[ ! -e "${DEV}" ]]; then + printf "no garmin device present\n" >&2 + exit 1 +fi + +mnt=$(findmnt --noheadings --first-only --options "${MOUNTOPTS}" --output TARGET "${DEV}") + +if [[ -n "${mnt}" ]]; then + if [[ "${mnt}" == "${MOUNTPOINT}" ]]; then + printf '%s already correctly mounted\n' "${DEV}" + else + printf '%s already mounted somewhere else, aborting\n' "${DEV}" >&2 + exit 1 + fi +else + if findmnt --mountpoint "${MOUNTPOINT}" >/dev/null; then + printf "%s already in use\n" "${MOUNTPOINT}" >&2 + exit 1 + else + sudo mount -o "${MOUNTOPTS}" "${DEV}" "${MOUNTPOINT}" + fi +fi + +for folder in "${SYNC_FOLDERS[@]}"; do + rsync "${RSYNCOPTS[@]}" "${MOUNTPOINT}/GARMIN/${folder}/" "${HOME}/sync/garmin/${folder}/" +done