kas*_*ega 7 rsync file-copy wildcards
我的目录加载了数千个子目录:
/home/tmp/
1
12
123
1234
2345
234
3456
345
34
Run Code Online (Sandbox Code Playgroud)
每个子目录依次有数百个子目录,如果第一级子目录匹配,我想要 rsync...
我需要的是一种仅复制/rsync 以给定数字 [1-9] 开头的目录的方法...
我想我想要的基本上是可以让我使用通配符来匹配的东西
rsync -rzvvhP remotehost:/home/tmp/1* /home/tmp/
Run Code Online (Sandbox Code Playgroud)
我想让 rsync 同步
/home/tmp/1/
/home/tmp/12/
/home/tmp/123/
/home/tmp/1234/
Run Code Online (Sandbox Code Playgroud)
目录和它们拥有的任何子目录,但不是任何以不同数字开头的第一级目录...
/home/tmp/234/
/home/tmp/2345/
........./3*/
........./4*/ etc..
Run Code Online (Sandbox Code Playgroud)
我试过的:
rsync -rzvvhP --exclude='*' --include-from=1.txt remotehost:/home/tmp/ /home/tmp/
Run Code Online (Sandbox Code Playgroud)
其中 1.txt 包含:
1
12
123
1234
Run Code Online (Sandbox Code Playgroud)
当我使用 2.txt 执行此操作时,尽管 rsync 似乎仍然遍历以 1 和 3 等开头的所有目录...
我该如何做到这一点,以便我可以使用一个命令来仅同步以任何给定数字开头的目录?
Gil*_*il' 20
您提出的建议实际上应该有效:
rsync -rzvvhP remotehost:/home/tmp/1\* /home/tmp/
Run Code Online (Sandbox Code Playgroud)
(*
在大多数情况下,您可以不引用 the ,因为该模式remotehost:/home/tmp/1\*
不太可能与任何文件匹配,因此大多数 shell 设置将单独保留它。)
您的尝试--exclude='*'
失败,因为第一个匹配项适用,并且您对所有内容的第一个匹配项 ( *
) 表示要排除。
有关 rsync 过滤器的一些一般原则,请参阅本指南。在这里,要仅包含1
以顶级开头的目录,并复制包含的子目录中的所有内容,请先包含/1
然后排除/*
。
rsync -rzvvhP --include='/1' --exclude='/*' remotehost:/home/tmp/ /home/tmp/
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
30823 次 |
最近记录: |