summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsyncmusic-interactive119
1 files changed, 119 insertions, 0 deletions
diff --git a/syncmusic-interactive b/syncmusic-interactive
new file mode 100755
index 0000000..8aa353b
--- /dev/null
+++ b/syncmusic-interactive
@@ -0,0 +1,119 @@
+#!/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