#!/bin/bash REMOTE=root@canonical.aberrantflux.xyz REMOTEDIR=/srv/music LOCALDIR=$(pwd) WHITE="\033[37m" GREEN="\033[32m" BLUE="\033[35m" rm /tmp/remotemusiclist rm /tmp/localmusiclist rm /tmp/localonlymusicd rm /tmp/syncmusictorun echo "Remote directory is at $REMOTE:$REMOTEDIR" echo "Local dir is at $LOCALDIR" LOCALDISCOVERED=() LOCALCOUNT=0 for D in $(ls) do for D2 in $(ls $D) do LOCALCOUNT=$((LOCALCOUNT+1)) LOCALDISCOVERED+=($D/$D2) done done ssh $REMOTE " cd $REMOTEDIR REMOTEDISCOVERED=() REMOTECOUNT=0 for D in \$(ls) do for D2 in \$(ls \$D) do REMOTECOUNT=\$((REMOTECOUNT+1)) REMOTEDISCOVERED+=(\$D/\$D2) done done for (( i = 0 ; i <= \$REMOTECOUNT ; i++ )) do echo \${REMOTEDISCOVERED[\$i]} done " > /tmp/remotemusiclist touch /tmp/localonlymusicd LOCALONLYCOUNT=0 LOCALONLYMUSIC=() UNSYNCCOUNT=0 for (( i = 0 ; i <= $LOCALCOUNT-1 ; i++ )) do echo ${LOCALDISCOVERED[$i]} >> /tmp/localmusiclist if grep -xq ${LOCALDISCOVERED[$i]} /tmp/remotemusiclist then echo -e "$WHITE${LOCALDISCOVERED[$i]}" else UNSYNCCOUNT=$((UNSYNCCOUNT+1)) LOCALONLYCOUNT=$((LOCALONLYCOUNT+1)) echo "$UNSYNCCOUNT. ${LOCALDISCOVERED[$i]}" >> /tmp/localonlymusicd LOCALONLYMUSIC+=(${LOCALDISCOVERED[$i]}) fi done echo -e $BLUE cat /tmp/localonlymusicd REMOTEONLYCOUNT=0 REMOTEONLYMUSIC=() while read p; do if [[ $p != "" ]] then if [ $LOCALONLYCOUNT = 0 ] || grep -xq $p /tmp/localmusiclist then UNSYNCCOUNT=$((UNSYNCCOUNT+1)) REMOTEONLYCOUNT=$((REMOTEONLYCOUNT+1)) echo -e "$GREEN$UNSYNCCOUNT. $p" REMOTEONLYMUSIC+=($p) fi fi done < /tmp/remotemusiclist echo -e $WHITE echo "Discovered $UNSYNCCOUNT unsynced albums" if [ $UNSYNCCOUNT = 0 ] then exit fi echo "Albums in BLUE are those that are only on the local machine. Albums in GREEN are those that are only on the remote machine. Albums in WHITE are those that are on both" read -p "Enter the indexes corresponding to the albums you wish to sync, separated by spaces: " INPUT for j in ${INPUT} do if (( j <= $LOCALONLYCOUNT )) then FDIR=$LOCALDIR/${LOCALONLYMUSIC[$((j-1))]} TDIR=$REMOTE:$REMOTEDIR/${LOCALONLYMUSIC[$((j-1))]} COMMAND="rsync -avzP --mkpath $FDIR $TDIR" echo "$COMMAND" >> /tmp/syncmusictorun else FDIR=$REMOTE:$REMOTEDIR/${REMOTEONLYMUSIC[$(($j-$LOCALONLYCOUNT-1))]} TDIR=$LOCALDIR/${REMOTEONLYMUSIC[$(($j-$LOCALONLYCOUNT-1))]} COMMAND="rsync -avzP --mkpath $FDIR $TDIR" echo "$COMMAND" >> /tmp/syncmusictorun fi done echo "WILL RUN: $(cat /tmp/syncmusictorun)" read -p "Enter y to confirm: " CONFIRM if [[ $CONFIRM = y ]] then source /tmp/syncmusictorun fi rm /tmp/remotemusiclist rm /tmp/localmusiclist rm /tmp/localonlymusicd rm /tmp/syncmusictorun