Advertisement
Guest User

rsync-now.sh

a guest
Feb 19th, 2011
364
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.12 KB | None | 0 0
  1. #!/bin/bash
  2. # rsync-now.sh
  3.  
  4. #echo "($$) Process started"
  5.  
  6. METHOD=ssh
  7. ARGS="--delete --progress"
  8. SRC=/dossier/source/
  9. DEST=utilisateur@hote:/dossier/cible
  10. OUTPUT_MAIL=root@localhost
  11. #OUTPUT_MAIL=0
  12.  
  13. SCRIPTNAME=$(basename "$0")
  14. LOCK=$SCRIPTNAME.lock
  15. RSYNC_CMD="rsync -e $METHOD -av $ARGS $SRC $DEST"
  16.  
  17. pid=$$
  18. if [ -f $LOCK ]; then
  19.     #echo "($$) Lock already exists, updating PID & exiting"
  20.     echo $pid > $LOCK
  21.     exit
  22. fi;
  23.  
  24. #echo "($$) Lock does not exist, creating"
  25. echo $pid > $LOCK
  26.  
  27. runCmd=0
  28. while (( ! $runCmd )); do
  29.     #echo "($$) Waiting 2s more..."
  30.     sleep 2
  31.     lockPid=`cat $LOCK`
  32.     #echo "($$) $lockPid // $pid"
  33.     if [ $lockPid == $pid ]; then
  34.         runCmd=1
  35.     else
  36.         pid=$lockPid
  37.     fi
  38. done
  39.  
  40. #echo "($$) Lock PID unchanged, executing commands"
  41.  
  42. out="`date` Starting sync...\n"
  43. while (( $runCmd )); do
  44.     out="$out`$RSYNC_CMD` \n"
  45.    
  46.     lockPid=`cat $LOCK`
  47.     #echo "($$) $lockPid // $pid"
  48.     if [ $lockPid == $pid ]; then
  49.         runCmd=0
  50.         rm $LOCK;
  51.     else
  52.         pid=$lockPid
  53.     fi
  54. done
  55. out="$out`date` Done.\n"
  56.  
  57. if [ $OUTPUT_MAIL != 0 ]; then
  58.     echo -e "$out" | mail -s "$SCRIPTNAME" $OUTPUT_MAIL
  59. else
  60.     echo -e "$out"
  61. fi;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement