So speichern Sie große Dateien auf Fat32

So speichern Sie große Dateien auf Fat32

Ich wollte eine große Videodatei auf einem FAT32-Laufwerk (~18 GB) speichern, habe jedoch festgestellt, dass dies aufgrund von Einschränkungen des Dateisystems einfach nicht möglich ist.

Gibt es ein einfaches Tool, mit dem ich die Datei in kleinere, speicherbare Teile aufteilen und diese dann wieder zusammensetzen kann, wenn ich die archivierte Datei abrufen möchte?

Oder gibt es eine bessere Möglichkeit, große Dateien auf FAT32 zu speichern?

Antwort1

Die meisten Dateiarchivierungsprogramme, wie7-Zip, WinZip und WinRAR ermöglichen es Ihnen, ein Archiv auf mehrere Dateien aufzuteilen. Wenn Geschwindigkeit wichtig ist, können Sie versuchen, die Komprimierungsfunktion des Programms zu deaktivieren.

Auf GNU/Linux-Systemen können Sie denTeiltUndKatzeProgramme aus dem Paket coreutils (z. B. split -b 4294967295 FOO /media/FATDISK/BARum FOO in BARaa, BARab, ... aufzuspalten und cat /media/FATDISK/BAR?? > FOOwieder zusammenzusetzen). Das Kommandozeilenprogramm von Mac OS X splitfunktioniert auf die gleiche Weise.

Antwort2

Wenn Sie nach einer schnellen Lösung hierfür suchen, sehen Sie sich bitte die anderen Antworten mit 7zipoder an split.Das ist eher einSpaßLösung.

Um dies zu erreichen, habe ich schließlich ein kleines Python 2-Skript geschrieben.


# Author: Alex Finkel 
# Email: [email protected]

# This program splits a large binary file into smaller pieces, and can also 
# reassemble them into the original file.

# To split a file, it takes the name of the file, the name of an output 
# directory, and a number representing the number of desired pieces.

# To unsplit a file, it takes the name of a directory, and the name of an 
# output file.

from sys import exit, argv
from os import path, listdir

def split(file_to_split, output_directory, number_of_chunks):
    f = open(file_to_split, 'rb')
    assert path.isdir(output_directory)
    bytes_per_file = path.getsize(file_to_split)/int(number_of_chunks) + 1
    for i in range(1, int(number_of_chunks)+1):
        next_file = open(path.join(output_directory, str(i)), 'wb')
        next_file.write(f.read(bytes_per_file))
        next_file.close()
    f.close()
                
def unsplit(directory_name, output_name):
    assert path.isdir(directory_name)
    files = map(lambda x: str(x), sorted(map(lambda x: int(x), listdir(directory_name))))
    out = open(output_name, 'wb')
    for file in files:
        f = open(path.join(directory_name, file), 'rb')
        out.write(f.read())
        f.close()
    out.close()
        
    
if len(argv) == 4:
    split(argv[1], argv[2], argv[3])
elif len(argv) == 3:
    unsplit(argv[1], argv[2])
else:
    print "python split_large_file.py file_to_split output_directory number_of_chunks"
    print "python split_large_file.py directory name_of_output_file"
    exit()

Antwort3

Eine andere Möglichkeit: Verwenden Sie den splitBefehl von GNU Coreutils:

split --bytes=4G infile /media/FAT32drive/outprefix

um die Datei in 4-GB-Blöcke aufzuteilen und die Blöcke auf dem Ausgabelaufwerk zu speichern.

Die Originaldatei kann durch Aneinanderfügen der Blöcke (mit alphabetisch sortierten Dateinamen) wiederhergestellt werden.

Informationen zur Verwendung finden Sie imsplitHandbuch.

Coreutils, einschließlich split, sollten standardmäßig unter Linux und Mac OS X installiert sein. Unter Windows ist esverfügbar unter GnuWin32oder von Cygwin.

Antwort4

Zum Erstellen von Dateien mit der maximal zulässigen Größe auf vfat (2³²-1 Bytes) verwenden Sie den folgenden Befehl (in Bash):

split --bytes=$((2**32-1)) infile /media/FAT32drive/outprefix

oder, wenn Sie die Inline-Mathematik von Bash nicht verwenden möchten:

split --bytes=4294967295 infile /media/FAT32drive/outprefix

Die Option „--bytes=4G“ schlägt fehl, da 4G 2³² Bytes entspricht, was genau ein Byte mehr ist als die maximale Dateigröße bei vFAT.

verwandte Informationen