Wie man eine Datei mit einer Größe mehr als 2 GB in Linux / Unix zu schaffen?
Frage
Ich habe diese zu Hause aus arbeiten, wo ich eine sehr große Datei von einer Quelle zu mehreren Maschinen ein bisschen von Algorithmus Bittorrent zu übertragen haben. Zunächst bin Schneiden ich die Dateien in Stücke und ich übertragen Brocken zu allen Zielen. Ziele haben die Intelligenz die Stücke sie mit anderen Zielen zu teilen. Es funktioniert gut. Ich wollte eine 4 GB-Datei übertragen, so dass ich vier 1GB Dateien geteert. Es hat Fehler nicht aus, wenn ich die TAR-Datei 4 GB erstellt, aber am anderen Ende, während der Montage der alle Stücke zurück in die Originaldatei es Fehler aus Dateigrößenbeschränkung überschritten sagen. Wie kann ich mich über dieses 2 GB Beschränkung Problem zu lösen?
Lösung
kann ich mir vorstellen kann zwei Gründe haben:
- Sie haben noch Large File Support in Ihrem Linux-Kernel aktiviert
- Ihre Anwendung ist nicht mit Unterstützung für große Dateien kompiliert (möglicherweise müssen Sie gcc zusätzliche Flags gibt ihm zu sagen, 64-Bit-Versionen von bestimmten Datei zu verwenden, I / O-Funktionen. Z
gcc -D_FILE_OFFSET_BITS=64
)
Andere Tipps
Dies ist abhängig von dem Dateisystem-Typ . Wenn ext3 verwenden, habe ich keine solche Probleme mit Dateien, die deutlich größer sind.
Wenn die zugrunde liegende Platte ist FAT, NTFS oder CIFS (SMB), müssen Sie auch sicherstellen, dass Sie die neueste Version des entsprechenden Treiber verwenden. Es gibt einige ältere Treiber, die Dateigrößenbeschränkungen wie die, die haben Sie erfahren.
Könnte dies zu einem
Wenn Ihr System unterstützt wird, können Sie Hinweise bekommen. man largefile
Sie sollten fseeko verwenden und ftello finden Sie unter fseeko (3)
Hinweis: Sie sollten #define _FILE_OFFSET_BITS 64
definieren
#define _FILE_OFFSET_BITS 64
#include <stdio.h>