2010-03-25 238 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