Ich habe diese Heimarbeit, wo ich eine sehr große Datei von einer Quelle zu mehreren Maschinen mit bittorrent Art von Algorithmus übertragen muss. Anfangs schneide ich die Dateien in Chunks und übertrage Chunks auf alle Ziele. Ziele haben die Intelligenz, die Teile, die sie haben, mit anderen Zielen zu teilen. Es funktioniert gut. Ich wollte eine 4GB-Datei übertragen, also habe ich vier 1GB-Dateien geteert. Es gab keinen Fehler, wenn ich die 4GB-TAR-Datei erstellte, aber am anderen Ende, während alle Chunks wieder in die ursprüngliche Datei zusammengefügt wurden, wurde die Dateigröße überschritten. Wie kann ich dieses Problem lösen?
Ich kann mir zwei mögliche Gründe vorstellen:
gcc -D_FILE_OFFSET_BITS=64
) Dies hängt vom Dateisystemtyp ab. Wenn ich ext3 benutze, habe ich keine Probleme mit Dateien, die wesentlich größer sind.
Wenn der zugrunde liegende Datenträger FAT, NTFS oder CIFS (SMB) ist, müssen Sie auch sicherstellen, dass Sie die neueste Version des entsprechenden Treibers verwenden. Es gibt einige ältere Treiber, die Dateigrößenbeschränkungen haben, wie sie auftreten.
Könnte dies mit einer Systembeschränkungskonfiguration
Wenn Sie keine Begrenzung möchten, entfernen Sie fsize
von /etc/security/limits.conf
.
Sie sollten fseeko und ftello verwenden, siehe fseeko (3)
Beachten Sie, dass Sie #define _FILE_OFFSET_BITS 64