#!/bin/bash REMOTE=root@canonical.aberrantflux.xyz REMOTEDIR=/srv/music LOCALDIR=$(pwd) WHITE="\e[37m" GREEN="\e[32m" BLUE="\e[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 if [[ $D = *"-"* ]] then LOCALCOUNT=$((LOCALCOUNT+1)) LOCALDISCOVERED+=($D) else for D2 in $(ls $D) do LOCALCOUNT=$((LOCALCOUNT+1)) LOCALDISCOVERED+=($D/$D2) done fi done ssh $REMOTE " cd $REMOTEDIR REMOTEDISCOVERED=() REMOTECOUNT=0 for D in \$(ls) do if [[ \$D = *"-"* ]] then REMOTECOUNT=\$((REMOTECOUNT+1)) REMOTEDISCOVERED+=(\$D) else for D2 in \$(ls \$D) do REMOTECOUNT=\$((REMOTECOUNT+1)) REMOTEDISCOVERED+=(\$D/\$D2) done fi done for (( i = 0 ; i <= \$REMOTECOUNT ; i++ )) do echo \${REMOTEDISCOVERED[\$i]} done " > /tmp/remotemusiclist 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 ! 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" 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 $(cat /tmp/syncmusictorun) fi rm /tmp/remotemusiclist rm /tmp/localmusiclist rm /tmp/localonlymusicd rm /tmp/syncmusictorun