rsync同步指定目录
rsync使用–include参数与–exclude参数来实现同步指定目录,并且–exclude目录放在后面。
例如:
linux上文件目录
复制代码 代码如下:
ls /usr/local/apache/htdocs/site
aa
bb
cc
dd
ee
..
zz
只想同步aa,bb,ee这三个目录,其他的不同步。
实现代码:
复制代码 代码如下:
/usr/local/rsync/bin/rsync -azv --include "aa/" --include "bb/" --include "ee" --exclude "” –exclude=”*” ./* 192.168.137.22::tlbb
结果:能把今天所有的gz文件都正常传过去喽,先允许所有的匹配的gz文件,再允许所有子目录,最后拒绝所有其他的。
看到这里的朋友大家肯定发现了如果文件夹过多,肯定比较累,直接弄个txt文件将需要同步的与不需要同步都分别弄下就更好了,下面的方法在4.10版本中测试正常
1、只同步制定目录
如果当前目录文件夹有aa,bb,cc,dd等很多文件夹,我们只同步aa,bb,cc
先新建一个txt文件,例如 include.txt
复制代码 代码如下:
aa
bb
cc
只需要这么写就可以了--files-from="include.txt"
复制代码 代码如下:
@echo off
rsync -vzrtopg --progress --no-super --files-from="include.txt" --password-file=wtjb51.secrets /cygdrive/g/www/filesjb51net/web/ jb51@ip::filesjb51
2、不要同步哪些同步
新建一个exclude.txt文件,不同步dd文件夹
复制代码 代码如下:
dd
--exclude-from=exclude.txt
使用rsync -aP --exclude=upload 只能排除upload文件/目录。
如果要排除多个文件/目录,怎么办?
那只能建一个exclude.list,里面填写要排除的目录(一行一个文件/目录),然后rsync -aP --exclude-from=“exclude.list“
如:rsync -aP --exclude-from=/root/exclude.list 192.168.113.118::web_bak/www/ /data/server/www/ (从118同步数据到本机)
补充
--exclude=PATTERN exclude files matching PATTERN
--exclude-from=FILE read exclude patterns from FILE
--include=PATTERN don't exclude files matching PATTERN
--include-from=FILE read include patterns from FILE
补充:
rsync -vau --files-from="/root/syncto.txt" --exclude-from="/root/excludefile.txt" /data/web/ root@192.168.11.12:/data/web/用这种方式就可以了,其中syncto.txt写入要同步的文件,execludefile.txt存不需要同步的文件



