75 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #! /bin/sh
 | |
| 
 | |
| # I/O timeout (s).
 | |
| TIMEOUT_IO="45"
 | |
| # Connection timeout (s).
 | |
| TIMEOUT_CN="30"
 | |
| # Repeat delay if last rsync completed (s).
 | |
| DELAY_OK="60"
 | |
| # Repeat delay if last rsync failed (s).
 | |
| DELAY_KO="30"
 | |
| # Local root folder.
 | |
| LROOT="/opt/lsts/sync"
 | |
| # Local hostname
 | |
| LHOST="$(hostname)"
 | |
| 
 | |
| get_addr()
 | |
| {
 | |
|     case "$1" in
 | |
|         lauv-xplore-1)
 | |
|             echo "10.0.10.120"
 | |
|             ;;
 | |
|         lauv-seacon-2)
 | |
|             echo "10.0.10.20"
 | |
|             ;;
 | |
|         lauv-seacon-3)
 | |
|             echo "10.0.10.30"
 | |
|             ;;
 | |
|         *)
 | |
|             echo ""
 | |
|             ;;
 | |
|     esac
 | |
| }
 | |
| 
 | |
| sync()
 | |
| {
 | |
|     echo -e "\n------------------------------------------------------\n"
 | |
| 
 | |
|     rsync -a \
 | |
|         -v \
 | |
|         --progress \
 | |
|         --partial \
 | |
|         --timeout="$TIMEOUT_IO" \
 | |
|         --contimeout="$TIMEOUT_CN" \
 | |
|         --exclude 'Data.837' \
 | |
|         --exclude 'Data.jsf' \
 | |
|         --exclude 'Data.lsf.gz' \
 | |
|         --exclude 'core.*' \
 | |
|         "$RADDR::log" \
 | |
|         "$LROOT"
 | |
| }
 | |
| 
 | |
| if [ $# -ne 1 ]; then
 | |
|     echo "Usage: $0 hostname"
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| RHOST="$1"
 | |
| RADDR=$(get_addr "$RHOST")
 | |
| 
 | |
| if [ -z "$RADDR" ]; then
 | |
|     echo "ERROR: unknown hostname '$RHOST'."
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| mkdir -p "$LROOT"
 | |
| 
 | |
| while [ 1 ]; do
 | |
|     sync >> "$LROOT/.${LHOST}_${RHOST}.log" 2>&1
 | |
|     if [ $? -eq 0 ]; then
 | |
|         sleep "$DELAY_OK"
 | |
|     else
 | |
|         sleep "$DELAY_KO"
 | |
|     fi
 | |
| done
 |