我在服务器1上有这样的目录结构:
>数据
>公司1
> unique_folder1
> other_folder
> …
公司2
> unique_folder1
> …
> …
而且我想在服务器2上重复此文件夹结构,但只复制unique_folder1的目录/子目录.即结果必须是:
>数据
>公司1
> unique_folder1
公司2
> unique_folder1
> …
我知道rsync是非常好的.
我已经尝试’包括/排除’选项没有成功.
例如.我试过了:
rsync -avzn --list-only --include '*/unique_folder1/**' --exclude '*' -e ssh user@server.com:/path/to/old/data/ /path/to/new/data/
但是,结果,我没有看到任何文件/目录:
receiving file list ... done sent 43 bytes received 21 bytes 42.67 bytes/sec total size is 0 speedup is 0.00 (DRY RUN)
怎么了?想法?
附加信息:
我有sudo访问这两个服务器.我有一个想法是使用find命令和cpio一起拷贝到我需要的内容的新目录,之后使用Rsync.但这很慢,有很多文件等
我找到原因对于我来说,Rsync以这种方式工作并不清楚.
所以正确的命令(仅适用于company1目录)必须是:
所以正确的命令(仅适用于company1目录)必须是:
rsync -avzn --list-only --include 'company1/' --include 'company1/unique_folder1/***' --exclude '*' -e ssh user@server.com:/path/to/old/data/ /path/to/new/data
即我们需要包括每个母公司目录.当然,我们无法在命令行中手动编写所有这些公司目录,所以我们将列表保存到文件中并使用它.
我们需要做的最后的事情
1.在服务器1上生成包含文件,因此其内容将(我使用过ls和awk):
+ company1/ + company1/unique_folder1/*** ... + companyN/ + companyN/unique_folder1/***
2.将include.txt复制到服务器2并使用以下命令:
rsync -avzn \ --list-only \ --include-from '/path/to/new/include.txt' \ --exclude '*' \ -e ssh user@server.com:/path/to/old/data/ \ /path/to/new/data