我正在创建一个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历史中。
有什么想法吗?
答案 0 :(得分:3)
您是否考虑过将rsync
与适当的--include
和--exclude
标记一起使用? rsync
可以复制ssh
,您应该能够使用单个命令复制整个树(或子集)。
此外,如果您唯一需要输入密码,您也可以尝试使用授权密钥(可能还有ssh-agent),这样您就无需输入密码即可访问其他主机。
答案 1 :(得分:2)
为什么不使用rsync
来完成这项工作呢?它支持--filter
,完全符合您的需求。这是一个示例: