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)?
quelle
Antworten:
Versuchen Sie, diese Socket-Optionen auf smbclient zu verwenden
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.
quelle
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 fehlgeschlagencli_push returned NT_STATUS_IO_TIMEOUT
.Seit Version 7.40 unterstützt curl das smb- Protokoll.
Daher habe ich dies verwendet, um das
moderately_sized_file
von Linux auf den DienstOurRemoteDirectory
auf dem Windows-Computer hochzuladen172.16.17.52
: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 jedochsmbclient mkdir
bisher ohne Probleme funktioniert):quelle
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.
quelle
wenn
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
quelle