通过SSH传输文件


9

我想在某些脚本上使用通过SSH进行文件传输。我已经读过可以在ssh上进行压缩。我应该从哪里开始阅读?


你为什么提起焦油?
Zoredache

1
tar是通过SSH复制文件的最快方法。复制大量小文件时,scp和rsync有很多协议开销。
贾斯汀2010年

@Justin,当然,使用tar的假设是您将拥有可靠的连接。如果原始性能无关紧要,那么通常最好坚持使用更常见且更简单的解决方案,例如scp / rsync。
Zoredache

1
?? ssh上的tar不会比scp或rsync差。rsync更好的唯一方面是它可以让您恢复。如果连接不可靠,可能仍然值得尝试先在ssh上尝试tar,然后再通过rsync完成传输。
贾斯汀2010年

@Justin,这将导致一个相当复杂的脚本。也许我们应该从更基本的东西开始。
约翰·加迪尼尔

Answers:


23

要通过ssh进行文件传输,您可以

  • 使用scp
    • scp -r /srcdir/ user@remotehost:/destdir/
  • 在ssh上使用rsync(请参阅-e参数)
    • rsync -e ssh -a /srcdir/ user@remotehost:/destdir/
  • 使用一些通过stdin / out传输数据的工具(tarcpio等)
    • cd /sourcedir; tar -c . | ssh username@remotehost bash 'cd /dstdir; tar -x
  • 通过sshfs挂载文件系统(如果系统支持保险丝)

我经常使用这三个;我使用哪种取决于具体情况。
reinierpost 2010年

3

O'Reilly拥有一本书,其中包括SSH,《安全外壳:权威指南》(如果您使用Google进行搜索),可以找到很多参考资料,购买它们的地方以及在线查看。


当您不满意时,会喜欢它,并且没有评论让您知道为什么。他问从哪里开始阅读-可以在网上和书店中找到。它是ssh的重要参考。
凯文·K

我认为这也是错误的。鉴于您实际上回答了问题,而为什么接受了投票(到目前为止已投票15次),您为什么被否决(两次)?这是一种通用的方式,如何通过ssh复制文件,而不涉及从何处开始阅读。我要投票给你,只是想纠正这种情况。不要让他们让你失望。
理查德·霍洛威


0

对于ssh上的tar,您可以使用ssh转发stdin和stdout的事实。所以你可以做

ssh server 'tar czf - /some/dir/' > tarfile.tar.gz

并在本地计算机上进行备份。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.