diff options
Diffstat (limited to 'syncmusic-interactive')
| -rwxr-xr-x | syncmusic-interactive | 119 |
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 |
