#!/bin/bash WORKING_DIR="/storage/era/iaudio" LOG_FILE="$WORKING_DIR/logs/transfer.$(date +%Y-%m-%d)" MUSIC_DIR="/storage/era/music/" IAUDIO_LAST="/media/iAudio/.scrobbler.log" IAUDIO_DIR="/media/iAudio/music/" IAUDIO_MOUNTED="/media/iAudio/.iaudio.mounted" cd "$WORKING_DIR" function r_exit() { sync exit $1 } let i=1 while [ -e "$LOG_FILE.$i" ]; do let i++ done LOG_FILE="$LOG_FILE.$i" echo -n "Date: " >> "$LOG_FILE" date >> "$LOG_FILE" echo -n "Load:" >> "$LOG_FILE" uptime >> "$LOG_FILE" echo >> "$LOG_FILE" # i know this is lazy.... if [ "$(ps aux | grep rsync &>/dev/null|wc -l)" -gt 1 ] ; then /usr/bin/logger "rsync already running" r_exit 4 fi if [ ! -e "$IAUDIO_MOUNTED" ]; then /usr/bin/logger "could not find iaudio (no .iaudio.mounted)" r_exit 5 fi # try to run scrobbler /storage/era/bin/rockscrobbler.pl -u remiss -p douglas -f "$IAUDIO_LAST" 2>&1 >> "$LOG_FILE" echo > "$IAUDIO_LAST" #echo "not running incoming rsync" rsync --progress --recursive --exclude-from="$WORKING_DIR/listonupdate" --times --modify-window=5 "$IAUDIO_DIR" "$MUSIC_DIR" 2>&1 >> "$LOG_FILE" ret_i=$? # required because empty dirs get's copied cd "$MUSIC_DIR" echo "Removing empty dirs" >> "$LOG_FILE" find -mindepth 1 -depth -type d -exec rmdir --ignore-fail-on-non-empty '{}' \; >> "$LOG_FILE" cd "$WORKING_DIR" rsync --progress --recursive --delete-excluded --delete-during --exclude-from="$WORKING_DIR/exclude" --times --modify-window=5 "$MUSIC_DIR" "$IAUDIO_DIR" 2>&1 >> "$LOG_FILE" ret_o=$? echo -en "\nLoad:" >> "$LOG_FILE" uptime >> "$LOG_FILE" echo >> "$LOG_FILE" echo "$ret_i:$ret_o" >> "$LOG_FILE" cd "$MUSIC_DIR" find -type f |sed s/^.\\/// > "$WORKING_DIR/listonupdate" r_exit 0