大文件的 smbclient 替代方案
我正在使用 smbclient 每晚將一組大文件(80 GB)從 Linux 系統傳輸到 Windows 共享。最近,無論出於何種原因,我一直收到 I/O 超時:
cli_push returned NT_STATUS_IO_TIMEOUT
這會導致活動文件傳輸被中止並從 Windows 共享中刪除。
這可能是由於未解決的Samba 錯誤 8498(也可能不是)。Windows 系統不在我的控制之下,所以我無法安裝 SSH 伺服器(使用 SCP 或 SFTP),我不想依賴微軟的 NFS 實現。
是否有另一種簡單的標準替代方案,可以讓我定期通過網路將 80 GB 的數據從 Linux 可靠地移動到 Windows(網路是 GB 乙太網,所以頻寬不是問題)?
嘗試在 smbclient 上使用這些套接字選項
smbclient --socket-options='TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072'
我定期將 40+GB 的文件從 Windows 複製到 Linux 媒體伺服器,沒有錯誤,典型的傳輸速率是 85MB/s,機器通過千兆交換機連接。
使用
curl
我正在執行 smbclient 版本 4.9.4,試圖將 97 MiB 文件從 Arch Linux 傳輸到 Windows。根據使用者 bsd 的建議,我使用 smbclient 呼叫
--socket-options='TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072'
但這仍然失敗了
cli_push returned NT_STATUS_IO_TIMEOUT
。幸運的是,從7.40 版本開始,curl 支持smb協議版本 1。
因此,我使用它
moderately_sized_file
從 Linux 上傳到OurRemoteDirectory
Windows 機器上的服務172.16.17.52
:curl --upload-file /home/me/moderately_sized_file --user "OurWindowsDomain/MyUserName:MyPassword" smb://172.16.17.52/OurRemoteDirectory/Path/To/Dir/
對我來說,curl 每次都可靠地上傳文件,並且還顯示上傳進度,這很好。
創建遠端目錄
請注意,curl還不支持在遠端主機上創建目錄。
因此,您可能需要
/Path/To/Dir/
使用以下smbclient
命令進行創建:smbclient //172.16.17.52/OurRemoteDirectory/ -U MyUserName%MyPassword -W OurWindowsDomain -c 'mkdir Path/To/Dir/'
與使用 smbclient 上傳文件相比,
smbclient mkdir
到目前為止,它的工作沒有問題。