Shell scripts‎ > ‎

rsync shell script

2010.11.11
#!/bin/bash
#---------- ---------- ---------- ---------- ---------- ----------
#  11.Nov.2010 -- Link Lin
#
#      rsynctest.sh
#
#---------- ---------- ---------- ---------- ---------- ----------
## VARIABLES

ADMINS="admin@testscript.com.tw  admin2@testscript.com.tw"                        ## rsync結果要mail到哪些信箱
MYNAME=$(basename $0)                                                                                ## Name of this Script
MYHOST=$(hostname)                                                                                      ## Hostname
TODAY=$(date +"%m%d%k%M%N_%p")
SOURCEDIR="/home/test/devp/"                                                                       ## 要上傳的來源目錄

LOG=/home/test/log/rsync-$TODAY.log                                                               ## 指定log名稱

## Welcome Message
echo "---------- ---------- ---------- ----------"                   |tee -a $LOG
date                                                                   |tee -a $LOG
echo "$MYNAME  :  $MYHOST"                         |tee -a $LOG
read -p "請輸入本次上傳程式的原因: " reason
echo "本次上傳程式的原因為: $reason"                 |tee -a $LOG
echo "開始上傳程式到正式機"                               |tee -a $LOG
echo "---------- ---------- ---------- ----------"                    |tee -a $LOG


#---------- ---------- ---------- ---------- ---------- ----------
## 實際執行的rsync函數
rsync_it()
{
  DSTHOST=$1 ; DSTDIR=$2 ; SRCDIR=$3
  OPTS="--exclude-from=/home/test/rsync.exclude --delete -azv --stats "               #rsync的參數, 不想同步的目錄或檔案可以寫在/home/test/rsync.exclude檔案內

  echo "rsync'ing $SOURCEDIR to $DSTHOST:$DSTDIR"  |tee -a $LOG
  echo "---------- ---------- ---------- ----------"                                 |tee -a $LOG

  # Now do the transfer
  /usr/bin/rsync $OPTS -e ssh $SRCDIR $DSTHOST:$DSTDIR | tee -a $LOG

  echo "---------- ---------- ---------- ----------" |tee -a $LOG

}


# 要同步程式到哪些主機的目錄上
#---------- ---------- ---------- ---------- ---------- ----------
# Host #1 - www1
DDIRS="/home/test/www/"

for DIR in $DDIRS
do
 rsync_it 192.168.101.1 $DIR $SOURCEDIR                                                    # 第一個參數192.168.101.1是目的主機, 第二個參數$DIR($DDIRS)是目的目錄
done                                                                                                               # 第三個參數$SOURCEDIR是來源目錄

#---------- ---------- ---------- ---------- ---------- ----------
# Host #2 - www2
DDIRS="/home/test/www/"

for DIR in $DDIRS
do
 rsync_it 192.168.101.2 $DIR $SOURCEDIR
done


#---------- ---------- ---------- ---------- ---------- ----------
# Mail log to admins
cat $LOG | mailx -s "$TODAY 程式上傳log" "$ADMINS"                                      # mailx 套件可用指令 sudo apt-get install mailutils 安裝

#End




Comments