2010-03-25 184 views
12

在ssh协议中,是否存在文件传输机制?
我正在使用已有ssh工具代码的现有代码库。现在我需要通过SSH连接传输文件。如果ssh协议已经支持它,我不必将scp的东西整合进去。通过ssh传输文件

谢谢。

编辑:
我使用C,基于openssh的ssh代码。
我必须编程地传输文件,而不是使用外部程序/命令,因为有一些限制。该程序应该在远程主机上逐块传输任何大小的文件,并即时处理该块。然后块数据被丢弃。

+0

可能重复的[通过SSH传输文件](http://stackoverflow.com/questions/343711/transferring-files-over-ssh) – Ajedi32 2014-06-10 14:55:43

回答

5

sftp和scp都是现有的“安全”文件传输方法,但您的答案将取决于您为应用程序使用的技术堆栈。您没有提及您是否使用C#,PHP或其他语言,或者您的应用在哪种机器上运行。这些事情将对您将得到的答案产生重大影响。

+0

我使用基于openssh的C,ssh代码。 – datasunny 2010-03-25 16:27:11

2

试试看SFTP

编辑:您可能还会发现this article有关在ssh上运行rsunc的有用信息。

20
echo "hello" | ssh [email protected] "cat - > /tmp/file" 

我正确地读取文件,用SSH管理它,然后在/ tmp/file中的SSHHost服务器上写入。

+0

我必须编程传输文件,因为有一些内存/硬盘限制。 – datasunny 2010-03-25 16:26:01

+0

为好'ol天+1 :-)我意识到这篇文章是旧的,但你可以用ssh键以脚本化的方式做到这一点:http://www.linuxproblem.org/art_9.html – zje 2013-04-29 01:57:01

1

的Rsync能有所帮助:

rsync [email protected]:filename remotefilename 
+0

它似乎不幸rsync必须在两台机器上都可用 – Hafenkranich 2016-06-05 17:00:19

4

老派的方式是“焦油对焦油”,这确实复制和保存权限的一个好工作。这在很大程度上被双方使用rsync时使用rsync所取代。

ssh [email protected] "cd mydir && tar cfp - mysubdir" | tar xvfp - 

当你这样做时,要小心稀疏文件等。在这种过程中,大多数焦油都可以选择保留文件洞。

+0

请记住,两边都必须能够使用rsync – Hafenkranich 2016-06-05 17:03:04