Scp

通過 ssh 傳輸大型 (8 GB) 文件

  • August 26, 2018

我用 SCP 試了一下,但它說“負文件大小”。

>scp matlab.iso xxx@xxx:/matlab.iso
matlab.iso: Negative file size

還嘗試使用 SFTP,工作正常,直到傳輸了 2 GB 的文件,然後停止:

sftp> put matlab.iso
Uploading matlab.iso to /home/x/matlab.iso
matlab.iso                                           -298% 2021MB -16651.-8KB/s   00:5d
o_upload: offset < 0

知道有什麼問題嗎?SCP 和 SFTP 不支持大於 2 GB 的文件嗎?如果是這樣,那麼如何通過 SSH 傳輸更大的文件?

目標文件系統是 ext4。Linux 發行版是 CentOS 6.5。文件系統目前有(可訪問的)大文件(最大 100 GB)。

Rsync非常適合通過 ssh 傳輸大文件,因為它能夠繼續由於某種原因而中斷的傳輸。由於它使用雜湊函式來檢測相等的文件塊,因此 continue 功能非常強大。

令人驚訝的是,您的sftp/scp版本似乎不支持大文件 - 即使使用 32 位二進製文件,現在LFS 支持也應該是相當標準的。

我不確定 SCP 和 SFTP 的文件大小限制,但您可以嘗試解決拆分問題:

split -b 1G matlab.iso

這將創建 1 GiB 文件,預設情況下命名為xaa, xab, xac, .... 然後您可以使用 scp 傳輸文件:

scp xa* xxx@xxx:

然後在遠端系統上用 cat 重新創建原始文件:

cat xa* > matlab.iso

當然,這種變通方法的代價是 split 和 cat 操作所花費的時間,以及本地和遠端系統所需的額外磁碟空間。

引用自:https://unix.stackexchange.com/questions/190537