Ich habe es mit SCP versucht, aber es steht "Negative Dateigröße".
>scp matlab.iso xxx@xxx:/matlab.iso
matlab.iso: Negative file size
Auch versucht mit SFTP, funktionierte gut, bis 2 GB der Datei übertragen worden waren, dann gestoppt:
sftp> put matlab.iso
Uploading matlab.iso to /home/x/matlab.iso
matlab.iso -298% 2021MB -16651.-8KB/s 00:5d
o_upload: offset < 0
Irgendeine Idee, was falsch sein könnte? Unterstützen SCP und SFTP keine Dateien, die größer als 2 GB sind? Wenn ja, wie kann ich größere Dateien über SSH übertragen?
Das Zieldateisystem ist ext4. Die Linux-Distribution ist CentOS 6.5. Das Dateisystem enthält derzeit (zugreifbare) große Dateien (bis zu 100 GB).
scp
sftp
large-files
Eimrek
quelle
quelle
-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
. Wenn Sie jedoch ein 64-Bit-6.5-System verwenden, ist die Installation der Administratorenopenssh-5.3p1-94.el6_6.1.x86_64
undopenssh-server-5.3p1-94.el6_6.1.x86_64
der Standard-Repos wahrscheinlich einfacher .Antworten:
Das ursprüngliche Problem (basierend auf dem Lesen aller Kommentare zur OP-Frage) war, dass die
scp
ausführbare Datei auf dem 64-Bit-System eine 32-Bit-Anwendung war. Eine 32-Bit-Anwendung, die nicht mit "Unterstützung für große Dateien" kompiliert wurde , hat nur Suchzeiger2^32 =~ 4GB
.scp
Mit dem folgendenfile
Befehl können Sie feststellen, ob es sich um 32-Bit- Dateien handelt:Auf den meisten modernen Systemen wird es 64-Bit sein, so dass keine Dateikürzung auftreten würde:
Eine 32-Anwendung sollte weiterhin "große Dateien" unterstützen können, muss jedoch aus dem Quellcode mit Unterstützung für große Dateien kompiliert werden, was in diesem Fall anscheinend nicht der Fall war.
Die empfohlene Lösung ist möglicherweise die Verwendung einer 64-Bit-Vollstandarddistribution, bei der Apps standardmäßig als 64-Bit kompiliert werden.
quelle
Rsync eignet sich sehr gut zum Übertragen großer Dateien über ssh, da es Übertragungen fortsetzen kann, die aus irgendeinem Grund unterbrochen wurden. Da es Hash-Funktionen verwendet, um gleiche Dateiblöcke zu erkennen, ist die Continue-Funktion recht robust.
Es ist ein wenig überraschend, dass Ihre
sftp
/scp
-Versionen keine großen Dateien zu unterstützen scheinen - selbst mit 32-Bit-Binärdateien sollte die LFS-Unterstützung heutzutage ein ziemlich normaler Standard sein.quelle
rsync
ist dies jetzt eine gute Idee. Verwenden Sie die-P
Option, um sowohl eine Fortschrittsanzeige zu erhalten als auch den Empfänger anzuweisen, eine unvollständige Datei aufzubewahren, falls die Übertragung erneut unterbrochen wird.Ich bin mir über die Dateigrößenbeschränkungen von SCP und SFTP nicht sicher, aber Sie könnten versuchen, das Problem mit split zu umgehen:
Dadurch werden 1 GiB-Dateien erstellt, die standardmäßig den Namen haben
xaa, xab, xac, ...
. Sie könnten dann scp verwenden, um die Dateien zu übertragen:Erstellen Sie dann auf dem fernen System die ursprüngliche Datei mit cat neu:
Die Nachteile für diese Problemumgehung sind natürlich die Zeit, die für den Split- und den Cat-Vorgang benötigt wird, sowie der zusätzliche Speicherplatz, der auf den lokalen und Remote-Systemen benötigt wird.
quelle