将特定文件类型从一个主机复制到另一个主机

时间:2011-09-29 19:27:50

标签: bash ssh scp

我正在创建一个bash脚本,它自动将C源文件和头文件从另一台主机的特定目录复制到我当前主机上的目录。

它目前生成此命令: ssh host2“cd dir1 / dir2&& find.-maxdepth 1 -regextype posix-extended -regex'。*。(c | h)'| tar -T - -c -f - ”| tar xf -

问题是我收到此错误: “tar:这看起来不像tar档案”

此错误由最终tar(tar xf - )输出,因为由于某种原因导致管道传输的tar文件已损坏。

如果我这样做而是使用ssh,tar和scp的组合它工作正常,但这需要我输入我的密码(对于host2)两次(一次用于ssh,一次用于scp)。我可以输入密码作为脚本的参数,但我不希望它出现在我的bash历史中。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您是否考虑过将rsync与适当的--include--exclude标记一起使用? rsync可以复制ssh,您应该能够使用单个命令复制整个树(或子集)。

此外,如果您唯一需要输入密码,您也可以尝试使用授权密钥(可能还有ssh-agent),这样您就无需输入密码即可访问其他主机。

答案 1 :(得分:2)

为什么不使用rsync来完成这项工作呢?它支持--filter,完全符合您的需求。这是一个示例:

http://ubuntuforums.org/showthread.php?t=1240150