我在服务器1上有如下目录结构:
- data
- company1
- unique_folder1
- other_folder
- ...
- company2
- unique_folder1
- ...
- ...
- company1
我想在服务器2上复制这个文件夹结构,但只复制unique_folder1下的目录/子目录。即结果应为:
- data
- company1
- unique_folder1
- company2
- unique_folder1
- ...
- company1
我知道rsync
非常适合这个任务。
我已经尝试过使用'include/exclude'选项,但没有成功。
例如,我已经尝试过:
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
。但这非常慢,文件很多等等。
folder**
,而不是folder/***
。当你在目录名后面加上斜杠时,需要第三个星号。两个星号和没有斜杠的方法也可以工作,但不太准确,因为它还会匹配具有相同基础名称的同级文件夹。 - Chad von Nau***
。在 RSync 文档 中,我看到use '**' to match anything, including slashes
。所以也许两个星号就足够了。但我认为三个更好 :) - Andron-n
和--list-only
吗?我是 rsync 新手,不知道为什么这个命令只列出而不执行任何操作。 - Kagami Sascha Rosylight以"dir_name/***"结尾将匹配目录(就像指定了"dir_name/"一样)以及目录中的所有内容(就像指定了"dir_name/**"一样)。此行为在版本2.6.7中添加。
- Dogsbody