Rsync –exclude-from 同步指定目录和文件

#!/bin/bash
LOCALDIR=/home/123/ftp/record
RSYNC_IP=192.168.95.17
RSYNC_USER=rsync_backup
RSYNC_PASS="--password-file=/etc/rsync.password"
RSYNC_MOD=hfsjrecord
RSYNC_DEST="$RSYNC_USER@$RSYNC_IP::$RSYNC_MOD"
EXCLUDE_LIST="--exclude-from=/opt/recode.list"
RSYNC_LOG=/tmp/rsy$(date +%F%H%M%S).log
function rsyncdata()
{
clear
date
echo -e "\033[31m 开始数据同步传输..........\033[0m"
sleep 1
#释放系统缓存
sync
sleep 1
sync
echo 3 > /proc/sys/vm/drop_caches
##################
#只同步某个目录下面文件,不包括该目录下面的其他目录
#直接用排除目录的方法,把排除的目录名字写在一个文件里面,不用写路径
#一行写一个
#如果还有排除的文件类型,可以直接在排除的文件里面 加 ,比如 *.log log文件也不会同步
if [ ! -f "$EXCLUDE_LIST" ];then
echo "--exclude-from 列表文件不存在,请添加。"
sleep 1
exit
fi
rsync -avWP $EXCLUDE_LIST $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}'|tr -cd "[0-9]"`
SPEED=`grep "bytes/sec" $RSYNC_LOG |awk '{print $7}'|tr -cd "[0-9]"`
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 秒 。"
+++++++++++++++++++++++==+++++++
vim /opt/recode.list
2019-01
2019-02
*.log
*.mp3
保存退出。
同步 /home/123/ftp/record 下面的,除 2019-01 2019-02 *.log *.mp3 文件外的所有文件和所有目录下面的文件。