rsync 以特定数字开头的所有目录

rsync 以特定数字开头的所有目录

我的目录加载了数千个子目录:

/home/tmp/
          1
          12
          123
          1234
          2345
          234
          3456
          345
          34

每个子目录依次有数百个子目录,如果第一级子目录匹配,我想要 rsync...

我需要的是一种仅复制/rsync 以给定数字 [1-9] 开头的目录的方法...

我认为我想要的基本上是允许我使用通配符来匹配的东西

rsync -rzvvhP remotehost:/home/tmp/1* /home/tmp/

我想要 rsync 同步

/home/tmp/1/
/home/tmp/12/
/home/tmp/123/
/home/tmp/1234/

目录及其拥有的任何子子目录,但不包括任何以不同数字开头的一级目录...

/home/tmp/234/
/home/tmp/2345/
........./3*/
........./4*/ etc..

我尝试过的:

rsync -rzvvhP --exclude='*' --include-from=1.txt remotehost:/home/tmp/ /home/tmp/

其中 1.txt 包含:

1
12
123
1234

当我使用 2.txt 执行此操作时,尽管 rsync 似乎仍然运行以 1 和 3 等开头的所有目录...

我怎样才能做到这一点,以便我可以使用一个命令仅同步以任何给定数字开头的目录?

答案1

您提出的建议实际上应该有效:

rsync -rzvvhP remotehost:/home/tmp/1\* /home/tmp/

(在大多数情况下,您可以不引用*,因为该模式remotehost:/home/tmp/1\*不太可能与任何文件匹配,因此大多数 shell 设置都会将其保留。)

您的尝试--exclude='*'失败了,因为第一个匹配项适用,并且您的第一个匹配项 ( *) 表示要排除。

本指南有关 rsync 过滤器的一些一般原则。在这里,要仅包含以1顶层开头的目录,并复制包含的子目录中的所有内容,请先包含,/1然后排除/*

rsync -rzvvhP --include='/1' --exclude='/*' remotehost:/home/tmp/ /home/tmp/

相关内容