Smbclientを使用して、LinuxシステムからWindows共有に毎晩大きなファイル(80GB)のセットを転送しています。最近、何らかの理由で、I/Oタイムアウトが発生しています。
cli_Push returned NT_STATUS_IO_TIMEOUT
これにより、アクティブなファイル転送が中止され、Windows共有から削除されます。
これは未解決の Sambaバグ8498 (または多分そうではない)が原因である可能性があります。 Windowsシステムは私の制御下にないため、scpサーバー(scpまたはsftpを使用するため)をインストールできず、MicrosoftのNFSの実装に依存したくありません。
定期的にネットワーク経由でLinuxからWindowsに80 GBのデータを確実に移動できる、もう1つのシンプルで標準的な代替策はありますか(ネットワークはGBイーサネットなので、帯域幅は問題ではありません)?
Smbclientでこれらのソケットオプションを使用してみてください
smbclient --socket-options='TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072'
私は定期的に40 GB以上のファイルをWindowsからLinuxメディアサーバーにエラーなしでコピーします。一般的な転送速度は、ギガビットスイッチ経由で接続されたマシンで85 MB /秒です。
curl
を使用する私はsmbclientバージョン4.9.4を実行していて、Arch LinuxからWindowsに97 MiBファイルを転送しようとしていて、--socket-options='TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072'
ユーザーbsdが推奨する でsmbclientを呼び出すと、cli_Push returned NT_STATUS_IO_TIMEOUT
で失敗します。
バージョン7.4 以降、curlは smb プロトコルをサポートしています。
したがって、これを使用してmoderately_sized_file
をLinuxからWindowsマシンのサービスOurRemoteDirectory
にアップロードしました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 mkdir
は問題なく機能しています)。
smbclient //172.16.17.52/OurRemoteDirectory/ -U MyUserName%MyPassword -W OurWindowsDomain -c 'mkdir Path/To/Dir/'
もし
smbclient --socket-options='TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072'
それでもcli_Push returned NT_STATUS_IO_TIMEOUT
を返します
タイムアウトオプション-t <timeout in seconds>
を追加するだけです
仮想マシンの巨大なファイル(> 200 Tb)をコピーするのに役立ちます
Linuxサーバーに ftp サーバーをインストールして、Windows管理者にファイルを毎晩送信するように依頼できますか?
FTPには、大きなファイルを転送するためのいくつかの便利な機能と、一時停止/再開メカニズムがあります。この大きなファイルの場合、非アクティブな接続を早めにシャットダウンするネットワークハードウェアをしないように注意する必要があります。 transfertが終了する前に、制御接続を閉じることができます。