小知识:rsync只同步指定目录的方法(已测)

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 “/*”  –progress rsync://127.0.0.1/site /work/backup/htdocs_bak/site

说明:

–include “aa/” –include “bb/” –include “ee” 包含了你要同步的目录 –exclude包含了不同步的目录所有用“/*”指定。

–exclude “/*” 除了–include同步的目录外,排除其他目录

rsync://127.0.0.1/site 为你rsync服务端要同步的目录

/work/backup/htdocs_bak/site 为你客户端的目录

rsync同步指定正则文件(含子目录)

前阵子做日志备份,把各个服务器上的日志同步到日志服务器上做备份,刚开始比较暴力,把所有压缩好的*gz文件全部传送到日志备份服务器上。后来,发现这种方式非常不好,一旦备份的目录发生改变,服务器上又会把它所有的*gz文件全部再传一遍,即浪费时间又给服务i/o产生不必要的压力,后来想只同步某天的*gz文件。

 需求描述:

有一个类似于这样的目录结构,子目录的个数是不确定的
复制代码 代码如下:

[root@IND_ tlbb]# tree

.

|– ReadMe.txt

| |– Audit

| `– Money_2013-09-10.tgz

|– Audit_2013-09-10.tgz

`– Install

我想同步*.py结尾的东东

同步完成后

复制代码 代码如下:

[root@IND_ tlbb]# tree

.

|– Audit

| `– Money_2013-09-10.tgz

`– Audit_2013-09-10.tgz

方式1:(失败)

rsync -auvz –include=”*${YDate}*gz ” ./ 192.168.137.22::tlbb

结果:会把所有的文件都同步过去了,连Install都同步过去了

方式2:

rsync -aruvz –include=”*${YDate}*gz” –include=”*/” –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 dont 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存不需要同步的文件

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:windows下文件同步工具 CwRsync 4.0.2 安装配置方法(图文)

2023-4-25 19:00:32

建站知识

小知识:无需密码通过ssh执行rsync来同步文件的方法

2023-4-25 19:15:25

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索