smbclient Alternative für große Dateien

11

Ich verwende smbclient, um jeden Abend eine Reihe großer Dateien (80 GB) von einem Linux-System auf eine Windows-Freigabe zu übertragen. In letzter Zeit habe ich aus irgendeinem Grund E / A-Zeitüberschreitungen erhalten:

cli_push returned NT_STATUS_IO_TIMEOUT

Dadurch wird die aktive Dateiübertragung abgebrochen und von der Windows-Freigabe gelöscht.

Dies kann auf einen ungelösten Samba-Fehler 8498 zurückzuführen sein (oder auch nicht). Das Windows-System ist nicht unter meiner Kontrolle, daher kann ich keinen SSH-Server installieren (um scp oder sftp zu verwenden) und möchte nicht von der Implementierung von NFS durch Microsoft abhängig sein.

Gibt es eine andere einfache Standardalternative, mit der ich regelmäßig 80 GB Daten zuverlässig von Linux auf Windows über das Netzwerk übertragen kann (das Netzwerk besteht aus GB-Ethernet, sodass die Bandbreite kein Problem darstellt)?

Ex Umbris
quelle
Erwägen Sie die Verwendung von Tools wie rsync mit aktiviertem Teilmodus. Auch WinScp sollte helfen. Oder stellen Sie einen gemeinsamen NAS-Speicher mit NFS unter Unix und CIFS unter Windows bereit, sodass keine Übertragung erforderlich ist, falls es sich um dasselbe Netzwerk handelt. Am besten richten Sie einen Torrent ein, falls das andere Netzwerk vorhanden ist. ;-)
Nikhil Mulley
bin gerade über die Suche nach "123go file transfer program" auf Google gestolpert
Nikhil Mulley

Antworten:

9

Versuchen Sie, diese Socket-Optionen auf smbclient zu verwenden

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

Ich kopiere regelmäßig fehlerfreie Dateien mit mehr als 40 GB von Windows auf den Linux-Medienserver. Die typische Übertragungsrate beträgt 85 MB / s bei Computern, die über einen Gigabit-Switch verbunden sind.

bsd
quelle
1
Danke dafür - das hat den Fehler für mich beseitigt; und eine 2G-Datei korrekt von einem Ubunutu auf eine Windows-Freigabe kopiert.
Monojohnny
Ich habe diese und andere Varianten der Anpassung der Werte für SO_RCVBUF und SO_SNDBUF ohne Glück ausprobiert. Die Datei, die ich hochladen möchte, ist ungefähr 8 Gigabyte über ein lokales Netzwerk ohne Paketverlust.
mhvelplund
2

Verwenden von curl

Ich verwende smbclient Version 4.9.4 und versuche, eine 97-MiB-Datei von Arch Linux auf Windows zu übertragen. Der Aufruf von smbclient mit dem --socket-options='TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072' empfohlenen Benutzer bsd ist immer noch fehlgeschlagen cli_push returned NT_STATUS_IO_TIMEOUT.

Seit Version unterstützt curl das Protokoll.

Daher habe ich dies verwendet, um das moderately_sized_filevon Linux auf den Dienst OurRemoteDirectoryauf dem Windows-Computer hochzuladen 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/

Für mich hat curl die Datei jedes Mal zuverlässig hochgeladen und zeigt auch den Upload-Fortschritt an, was sehr schön ist.

Beachten Sie, dass Curl das Erstellen von Verzeichnissen auf dem Remote-Host noch nicht unterstützt .

Infolgedessen müssen Sie möglicherweise /Path/To/Dir/mit dem folgenden Befehl erstellen (hat jedoch smbclient mkdirbisher ohne Probleme funktioniert):

smbclient //172.16.17.52/OurRemoteDirectory/ -U MyUserName%MyPassword -W OurWindowsDomain -c 'mkdir Path/To/Dir/'
Matthias Braun
quelle
0

Vielleicht können Sie einen FTP- Server auf Ihrem Linux-Server installieren und den Windows-Administrator bitten, ihm die Datei jede Nacht zu senden?

FTP verfügt über einige nützliche Funktionen zum Übertragen großer Dateien und einen Pausen- / Wiederaufnahme-Mechanismus. Bei so großen Dateien sollten Sie darauf achten, dass keine Netzwerkhardware inaktive Verbindungen zu früh herunterfährt. Es kann Ihre Steuerverbindung schließen, bevor die Übertragung endet.

Coren
quelle
Dateien gehen in die andere Richtung, von Linux zu Windows
Ex Umbris
0

wenn

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

kehrt immer noch zurück cli_push returned NT_STATUS_IO_TIMEOUT

Fügen Sie einfach eine Timeout-Option hinzu -t <timeout in seconds>

Es hilft mir, große Dateien (> 200 TB) von virtuellen Maschinen zu kopieren

Igor Voskresenskiy
quelle