2016-06-06 85 views
0

我想知道是否有方法將SFTP服務器上的文件複製到同一SFTP服務器上的另一個目錄。我想這樣做,而不需要在客戶端中獲取文件,然後將其設置在另一個文件夾中。當然這樣做會很好,但我想這會產生更多開銷,所以我想盡可能避免這種情況。我目前正在與基於JCraft JSch的Spring整合工作。使用Spring集成/ JCraft在內部複製SFTP服務器上的文件JSch

到目前爲止,我還沒有能夠找到任何方式來做到這一點,沒有中介。

另一種方法是打開一個SSH通道,並使用cp命令,但在我看來這並不太漂亮。

在此先感謝!

+0

您可能通過使用站點到站點的傳輸(_a.k.a._「FXP」)_具有相同的服務器本身_來獲得此行爲。 _I.e._您的FTP客戶端向服務器打開兩個FTP會話;一個會話告訴服務器使用被動數據傳輸(_e.g._用於接收文件),另一個會話告訴服務器進行主動數據傳輸(_e.g._用於發送文件),然後使用來自活動數據命令中被動數據響應的地址/端口。 – Castaglia

回答

1

核心SFTP協議不支持複製遠程文件。

有一個草案copy-file extension to the protocol,但只有少數SFTP服務器(例如ProFTPD/mod_sftp和Bitvise SFTP服務器)支持。

這絕對不是最普遍的OpenSSH SFTP服務器所支持的。

而且它也不受JSch庫支持。


另見我的回答How can I copy/duplicate a file to another directory using SFTP?


所以實際使用cp shell命令在一個「執行」通道(ChannelExec)是不幸的是,最好的方法(假設你連接到的* nix服務器,你有一個shell訪問)。

+0

感謝您的維修人員。它不支持它是一種恥辱。這似乎是一個微不足道的任務:) – user3157264

相關問題