Bash scripting problem
- by komidore64
I'm writing a bash script to sync my iTunes music directory to a directory on a removable hard drive. The script works fine when there is absolutely nothing in the folder on the external hard drive. Once all files have been copied to the external drive, then the script begins to act strange. Even though i just sync'd everything over, it proceeds to recopy certain files again. After the initial sync, it chooses the same files to resync each consecutive time the script is executed without any changes being made to the source directory.
#!/bin/bash
# shell script to sync music with gigabeat and/or firewire drive
musicdir="/Users/komidore64/Music/iTunes/iTunes Media/Music"
gigadir="/Volumes/GIGABEAT/music"
# fwdir="/Volumes/"
remove() {
find "$1" \
! \( -name "*.wav" \
-o -name "*.ogg" \
-o -name "*.flac" \
-o -name "*.aac" \
-o -name "*.mp3" \
-o -name "*.m4a" \
-o -name "*.wma" \
-o -name "*.m4p" \
-o -name "*.ape" \
-o -type d \) \
-exec rm -i {} \;
}
if [ $# == 0 ]; then
echo "no device argument present"
echo "specify '-g' for gigabeat"
echo "or '-f' for firewire drive"
else
remove "$musicdir"
while [ $1 ]; do
case $1 in
-g | --gigabeat ) rsync --archive --verbose --delete "$musicdir/" "$gigadir"
;;
-f | --firewire ) rsync --archive --verbose --delete "$musicdir/" "$fwdir"
esac
shift
done
echo "music synced"
fi