Rsync (–include-from) 同步指定目录和文件

#!/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 秒 。"