scp 在 SunOS 上递归目录

scp 在 SunOS 上递归目录

我遇到了 SCP(以及 rsync)的一个小问题。我需要将某些文件从服务器 A(运行 SunOS 5.8)复制到服务器 B(运行 SunOS 5.10)。

首先,我通过 ssh 获取文件列表(数百个)并查找

FILES=`ssh user@remote find ./ -name "*.sh" -o -name "*.cbs" -print`
scp -r user@remote:"$FILES" /u01/appl/somedir/ 

我的问题是,我想复制具有相对路径的文件,例如product/11/ora/clean.sh 还创建目录结构(结果具有/u01/appl/somedir/product/11/ora/clean.sh)。目前我只能下载该文件,并且不会创建目录。正如你所看到的,我-r在 scp 中使用了 flag。

答案1

shell 会将您的构造 user@remote:"$FILES" 扩展为您不想要的内容。第一个将具有 user@remote: 前缀,但其余的则不会。

您可以通过 SSH 传输 tar,因此使用上面的“find”命令构建包含文件可能会更容易,然后您可以执行以下操作:

find ...stuff... > myfiles
scp myfiles user@remote
ssh user@remote "tar -Imyfiles -cvf - " | tar -C /u01/appl/somedir -xf-

您可能会变得狡猾,并将找到的内容和 tar 与正确的引用结合起来。

相关内容