centos – 如何使用Rsync仅复制特定的子目录(几个目录中的相同名称)

我在服务器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目录)必须是:

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
相关文章
相关标签/搜索