如何在不同目录中从远程服务器复制所有* .xls文件?

时间:2015-02-18 12:02:13

标签: shell rsync scp

远程服务器在不同的目录深度中保存大量文件。从服务器,我想将所有这些* .xls文件解压缩并复制到我的本地桌面。

我可以使用以下方法找到所有文件:

find . -name '*.xls'

这正确地生成了一个包含文件路径的列表,我需要所有文件名。

我也知道可能需要使用scp,我可以为单个文件执行:

scp user@server:path/path/path.../file.xls /Desktop

我试过了:

find . -name '*.xls' -exec cp --parents \{\} /Desktop \; 

但这不起作用,因为它是从远程目录到本地。

我需要保留文件路径通向文件,以便目录结构保持不变。

我希望我的问题很清楚,我很缺乏经验,谢谢。

我目前有:

rsync -a --prune-empty-dirs --include '*ping.xls' --exclude '*pattern*' --exclude '*pattern2*' --exclude '*pattern3*' --exclude '...and_so_on*' ./remote_server ./Local_Desktop

是否有一种更优雅的方法可以排除除包含模式中的所有内容之外的所有内容?目前它只是rsync-ing所有。

2 个答案:

答案 0 :(得分:0)

请改用rsync。不要设置rsync,而是随时手动调用它。给出src机器的顶级文件夹并给出文件模式。

EG。 rsync -a --include=*.xls me@srcmachine:/opt/topfolder /tmp

答案 1 :(得分:0)

尝试过:

rsync -a --prune-empty-dirs --include */ --include '*ping.xls' --exclude '*' ./server ./target

还有很多其他组合,我发现了这些的重要性:     ''

适用于:

rsync -a --prune-empty-dirs --include '*/' --include '*ping.xls' --exclude '*' ./server ./target/