centos - 如何使用rsync只复制特定的子目录(几个目录同名)

标签 centos rsync centos6

我在服务器 1 上有这样的目录结构:

  • 数据
    • 公司1
      • unique_folder1
      • 其他文件夹
      • ...
    • 公司2
      • unique_folder1
      • ...
    • ...

我想在服务器 2 上复制这个文件夹结构,但只复制 unique_folder1 的目录/子目录。 IE。结果必须是:

  • 数据
    • 公司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

即我们需要包含每个父 company 目录。当然我们不能在命令行中手动编写所有这些 company 目录,所以我们将列表保存到文件中并使用它。


我们需要做的最后一件事:

1.在服务器 1 上生成包含文件,因此其内容为(我使用了 lsawk):

+ 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

关于centos - 如何使用rsync只复制特定的子目录(几个目录同名),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15687755/

相关文章:

centos - Wine InnoSetup CentOs

linux - CENTOS 7 和 Red Hat Enterprise Linux Server 版本 6.7 之间不匹配

linux - 在一个文件仍在写入时同步两个文件

linux - 如何在 Centos 6 上安装 jpegrescan?

php - Vagrant 虚拟主机/共享文件夹无法访问

linux - 开启ERP 7.0 + CentOS 6

linux - lsyncd - 事件队列溢出 - 解决方案是调整 fs.inotify.max_queued_events

c++ - 通过 execvp : StrictHostKeyChecking=no: unknown option 运行 rsync

java - 无法运行命令 `/opt/jdk1.8.0_131/bin/java' : No such file or directory

bash - .bash_profile 不在 su 用户上运行