automate upload to remote

#!/bin/bash

exec {lock_fd}>~/$(basename $0).pid || exit 1
flock -n "$lock_fd" || { echo "ERROR: flock() failed." >&2; exit 1; }

dir="/var/lib/deluged/Downloads/Completed/Upload"
rclone="/var/lib/deluged/.config/rclone/rclone.conf"
var=$(ls -1 $dir;echo 1;)

if [ -f $rclone ]; then


printf %s "$var" | while IFS= read -r line
do
 grep "^\[$line\]$" $rclone > /dev/null
 if [ $? -eq 0 ]; then
  echo remote "$line:" exists. geting stats about free disk space
  free_space=$(rclone about --full $line: | grep ^Free | grep -o -E "[0-9]+")
         echo "\"$free_space\" <== free disk space on remote"
  sizeOfToDo=$(du -b $dir/$line | tail -1 | grep -o -E "^[0-9]+")
  echo "\"$sizeOfToDo\" <== size of the upload dir"

  if [ "$sizeOfToDo" -lt "$free_space" ]; then
   echo "this can fit on remote destination"

   if [ -d "$dir/$line/move" ]; then
    tree $dir/$line/move
    rclone move --delete-empty-src-dirs $dir/$line/move $line:
   fi

   if [ -d "$dir/$line/sync" ] ; then
    tree $dir/$line/sync
    rclone sync --delete-empty-src-dirs $dir/$line/sync $line:
   fi

  fi
  
  # list all files on remote
  rclone ls $line:
   
 else
  echo $line remote does not exist
 fi

done

else
 echo rclone.conf no not exist
fi

flock -u "$lock_fd"

No comments: