web-dev-qa-db-ja.com

大きなファイル用のsmbclient代替

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イーサネットなので、帯域幅は問題ではありません)?

11
Ex Umbris

Smbclientでこれらのソケットオプションを使用してみてください

smbclient --socket-options='TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072'

私は定期的に40 GB以上のファイルをWindowsからLinuxメディアサーバーにエラーなしでコピーします。一般的な転送速度は、ギガビットスイッチ経由で接続されたマシンで85 MB /秒です。

9
bsd

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/'
2
Matthias Braun

もし

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)をコピーするのに役立ちます

0

Linuxサーバーに ftp サーバーをインストールして、Windows管理者にファイルを毎晩送信するように依頼できますか?

FTPには、大きなファイルを転送するためのいくつかの便利な機能と、一時停止/再開メカニズムがあります。この大きなファイルの場合、非アクティブな接続を早めにシャットダウンするネットワークハードウェアをしないように注意する必要があります。 transfertが終了する前に、制御接続を閉じることができます。

0
Coren