#!/bin/bash LOCALDIR=/home/dfsc/ftp/record RSYNC_IP=192.168.95.17 RSYNC_USER=rsync_backup RSYNC_PASS="--password-file=/etc/rsync.password" RSYNC_MOD=luyin RSYNC_DEST="$RSYNC_USER@$RSYNC_IP::$RSYNC_MOD" RSYNC_LOG=/tmp/rsy$(date +%F%H%M%S).log INCLUDE_LIST1="/opt/recode.list" INCLUDE_LIST="--include-from=$INCLUDE_LIST1" function rsyncdata() { clear date echo -e "\033[31m 开始数据同步传输..........\033[0m" sleep 1 #只同步某个目录下面文件,不包括该目录下面的其他目录 #直接用排除目录的方法,把排除的目录名字写在一个文件里面,不用写路径 #如果还有排除的文件类型,可以直接在排除的文件里面 加 ,比如 *.log log文件也不会同步 # 排除文件的写法 ,目录不用/ 可以直接单独使用 #cat /opt/recode.list #文件需要自己创建,文件名称和类型可以自己定义。 # 1970-01 # 2014-01 # *.log # rsync -avWP --exclude-from=/opt/recode.list $LOCALDIR/ $RSYNC_DEST $RSYNC_PASS >$RSYNC_LOG 2>&1 #只同步 --include-frome 某些个目录 , 后面必须 加 --exclude=/* # --include-from 文件写法: 后面必须 要加 --exclude=/* 意思是只同步某些目录,其他的全部排除。 # cat /opt/recode.list # b2/ # *.txt # 目录后面一定要加 / # if [ ! -f "$INCLUDE_LIST1" ];then echo "--include-from /opt/recode.list 列表文件不存在,请添加。" sleep 1 exit fi rsync -avWP $INCLUDE_LIST --exclude=/* $LOCALDIR/ $RSYNC_DEST $RSYNC_PASS >$RSYNC_LOG 2>&1 if [ $? -ne 0 ];then echo "Rsync 有问题,日志文件$RSYNC_LOG ." exit else echo -e "\033[31m Rsync 数据同步完成。\033[0m" fi } START_TIME=`date +%s` rsyncdata date END_TIME=`date +%s` #统计并计算传输速度 TOTAL=`grep "total size" $RSYNC_LOG |awk '{print $4}'` SPEED=`grep "bytes/sec" $RSYNC_LOG |awk '{print $7}'` echo -e "\033[31m 传输文件总量:`awk 'BEGIN{printf "%.6f\n", '$TOTAL' / 1024 / 1024 / 1024}'` G \033[0m" echo -e "\033[31m 传 输 速 度:`awk 'BEGIN{printf "%.6f\n", '$SPEED' / 1024 / 1024}'` M/秒 \033[0m" #程序总花费的时间,计算出来是秒为单位的。 TOTAL_TIME=`expr $(($END_TIME-$START_TIME))` #程序总花费的时间 对 3600 取模,得到小时数 TOTAL_H=`expr $TOTAL_TIME / 3600` #程序总花费的时间对3600取余,再对 60 取模,得到 分钟数 TOTAL_M=`expr $TOTAL_TIME % 3600 / 60` ##程序总花费的时间对3600取余,再对 60 取余,得到 秒数 TOTAL_S=`expr $TOTAL_TIME % 3600 % 60` echo "程序总耗时: $TOTAL_H 小时 $TOTAL_M 分 $TOTAL_S 秒 。"