From 36e1bf9bf77fb1e2bdb78965496169520de0eb57 Mon Sep 17 00:00:00 2001 From: Kai Stevenson Date: Wed, 7 Jun 2023 15:51:34 -0700 Subject: better syncmusic script --- syncmusic-interactive | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100755 syncmusic-interactive (limited to 'syncmusic-interactive') 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 -- cgit v1.3.1