49 lines
1.0 KiB
Bash
49 lines
1.0 KiB
Bash
|
|
#!/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
|