-
-
Save bonelifer/ab1efce33e93888d8851980971c76b39 to your computer and use it in GitHub Desktop.
rsync to Astell&Kern AK70 over mtp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Requirements: go-mtpfs, rsync, fuse2 | |
MUSICDIR="/home/<USER>/Music/" | |
DEVICEMUSICDIR="/mnt/ak70/Internal storage/Music/" | |
MOUNTPOINT="/mnt/ak70/" | |
print_usage() { | |
echo "Usage: $0 mount|umount|drysync|fullsync|hardsync|sync" | |
} | |
if [ "$#" -ne 1 ]; then | |
print_usage | |
exit 1 | |
fi | |
if [ "$1" == "mount" ]; then | |
sudo go-mtpfs "$MOUNTPOINT" & | |
exit 0 | |
elif [ "$1" == "umount" ]; then | |
sudo fusermount -u "$MOUNTPOINT" | |
exit 0 | |
fi | |
# normalize directories so nothing funky happens if someone sets the variables weird | |
normalize_directory() { | |
local dir="$1" | |
if [ -z "$dir" ]; then | |
echo "Set the variables in the script." | |
exit 1 | |
fi | |
echo "$dir" | sed 's:/*$::' | sed 's:$:/:' | |
} | |
MUSICDIR=$(normalize_directory "$MUSICDIR") | |
DEVICEMUSICDIR=$(normalize_directory "$DEVICEMUSICDIR") | |
if sudo [ ! -d "$MUSICDIR" ]; then | |
echo "Music directory does not exist: $MUSICDIR" | |
exit 1 | |
fi | |
if sudo [ ! -d "$DEVICEMUSICDIR" ]; then | |
echo "Mount point does not exist: $DEVICEMUSICDIR" | |
exit 1 | |
fi | |
if [ "$DEVICEMUSICDIR" == "/" ]; then | |
echo "Sync target is the root directory. No." | |
exit 1 | |
fi | |
if [ "$1" == "drysync" ]; then | |
sudo rsync -rvl --size-only --progress --dry-run "$MUSICDIR" "$DEVICEMUSICDIR" | |
elif [ "$1" == "fullsync" ]; then | |
# Sync everything, but no deletes. | |
sudo rsync -av --progress "$MUSICDIR" "$DEVICEMUSICDIR" | |
elif [ "$1" == "hardsync" ]; then | |
# Sync everything and delete files from the receiver if they're not on the sending end. | |
sudo rsync -av --delete --progress --dry-run "$MUSICDIR" "$DEVICEMUSICDIR" | |
read -p "The above is the output of a dry run. Files may be deleted from your device. Are you sure you want to do all that? [Y/n]" -n 1 -r | |
echo | |
if [[ $REPLY =~ ^[Yy]$ ]]; then | |
sudo rsync -avz --delete --progress "$MUSICDIR" "$DEVICEMUSICDIR" | |
fi | |
elif [ "$1" == "sync" ]; then | |
# standard use case when adding new albums or correcting art or something. | |
# --size-only skips a lot of files. rsync's standard checksum method | |
# doesn't really work over mtp for some reason, so without --size-only it | |
# ends up re-syncing a lot of stuff. | |
sudo rsync -rvl --size-only --progress "$MUSICDIR" "$DEVICEMUSICDIR" | |
else | |
print_usage | |
exit 1 | |
fi | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment