Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # rsync-motdet-now.sh
- # Configuration
- METHOD=
- ARGS="--progress --chmod=g+w,o-rwx"
- SRC=/home/motion/detections/
- DEST=usul::motdet
- OUTPUT_MAIL=0
- # Constants
- SCRIPTNAME=$(basename "$0")
- CWDIR=$(dirname "$0")
- LOG=$SCRIPTNAME.log
- LOCK=$SCRIPTNAME.lock
- PID_FILE=$SCRIPTNAME.tmp
- RSYNC_CMD="rsync -av $ARGS $SRC $DEST"
- ## Process start ##
- cd $CWDIR
- echo "($$) Process started | CWD: $PWD | UID: $UID | ARGS: $@" >> $LOG
- pid=$$
- # Check lock
- if ! mkdir $LOCK; then
- echo "($$) Lock already exists, updating PID & exiting" >> $LOG
- echo $pid > $PID_FILE
- exit 1
- fi;
- echo "($$) Lock does not exist, creating" >> $LOG
- echo $pid > $PID_FILE
- echo "($$) Lock PID: `cat $PID_FILE`" >> $LOG
- # Loop / Wait for no more concurrent processes
- runCmd=0
- while [ $runCmd == 0 ]; do
- echo "($$) Waiting 2s more..." >> $LOG
- sleep 1
- lastPid=`cat $PID_FILE`
- echo "($$) $lastPid // $pid" >> $LOG
- if [ "$lastPid" == "$pid" ]; then
- runCmd=1
- else
- pid=$lastPid
- fi
- done
- echo "($$) Lock PID unchanged, executing commands" >> $LOG
- # Loop until command is out of job
- out="`date` Starting sync...\n"
- while [ $runCmd == 1 ]; do
- out="$out`$RSYNC_CMD 2>&1` \n"
- lastPid=`cat $PID_FILE`
- echo "($$) $lastPid // $pid" >> $LOG
- if [ "$lastPid" == "$pid" ]; then
- runCmd=0
- rmdir $LOCK
- rm $PID_FILE
- else
- pid=$lastPid
- fi
- done
- out="$out`date` Done.\n"
- echo "($$) Finished, flushing output:" >> $LOG
- echo -e "$out" >> $LOG
- # Output
- if [ $OUTPUT_MAIL != 0 ]; then
- echo -e "$out" | mail -s "$SCRIPTNAME" $OUTPUT_MAIL
- else
- echo -e "$out"
- fi;
- echo "($$) Process finished | CWD: $PWD | UID: $UID | ARGS: $@" >> $LOG
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement