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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Centos下搭建性能监控Spotlight
CentOS 6.3下Strongswan搭建IPSec VPN
在CentOS6.5上安装Skype与QQ
阿里云基于centos6.5主机VPN配置
CentOS 6.3下配置multipah
CentOS安装、配置APR和tomcat-native
centos6.5下postgres-XC集群安装与配置
CentOS 6使用openssl搭建根CA
CentOS6.6中安装VNC server
CentOS下更新Python最新版本
Centos安装pycurl
CentOS 7 安装PostGIS
CentOS 7.1PXE网络自动化安装
CentOS下ffmpeg与第三方编码编译安装
CentOS 6.4安装配置squid
CentOS6.5 安装配置drbd
CentOS6.4 安装jenkins
centos安装增强工具
CentOS6.4安装配置redis
CentOS 6上部署OpenVPN Server