gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 17:12:18 24 4
gpt4 key购买 nike

我在服务器 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com