我在远程集群中的主目录下有多个目录,其中包含特定文件。我正在尝试将多个目录中的这些文件远程复制到一个本地目录中。正则表达式
scp -r username @ cluster:folderpath / * / file1。
在这种情况下不起作用,因为它会覆盖文件。我该如何复制
如果您可以评论如何将此方法扩展到文件扩展名(* .txt,* .out等),也会有所帮助。
答案 0 :(得分:1)
使用rsync
,您可以递归复制只包含您想要的文件:
$ cd /tmp
$ mkdir source1 source2 target
$ touch source1/a source2/a source2/b
$ rsync --include=a --recursive --relative 'localhost:/tmp/source*/a' target
$ ls -R target
target:
tmp
target/tmp:
source1 source2
target/tmp/source1:
a
target/tmp/source2:
a
如果您想在a
以下的任何级别加入source*
,您可以使用双星号:
$ cd /tmp
$ mkdir source1 source1/subdir source2 target
$ touch source1/a source1/subdir/a source2/a source2/b
$ rsync --include=a --recursive --relative 'localhost:/tmp/source*/a' 'localhost:/tmp/source*/**/a' target
$ ls -R target
target:
tmp
target/tmp:
source1 source2
target/tmp/source1:
a subdir
target/tmp/source1/subdir:
a
target/tmp/source2:
a