Fat32に大きなファイルを保存する方法

Fat32に大きなファイルを保存する方法

大きなビデオ ファイル (約 18 GB) を FAT32 ドライブに保存したかったのですが、ファイル システムの制限により、これは単純には不可能であることがわかりました。

ファイルを保存可能な小さな部分に分割し、アーカイブされたファイルを取得するときにそれらを再構成するための簡単なツールはありますか?

あるいは、FAT32 に大きなファイルを保存するより良い方法はありますか?

答え1

ほとんどのファイルアーカイバ、例えば7-ジップ、WinZip、WinRAR を使用すると、アーカイブを複数のファイルに分割できます。速度が重要な場合は、プログラムの圧縮部分を無効にしてみてください。

GNU/Linuxシステムでは、スプリットそしてcoreutils パッケージのプログラム (例: split -b 4294967295 FOO /media/FATDISK/BARFOO を BARaa、BARab などに分割し、cat /media/FATDISK/BAR?? > FOO再構成する)。Mac OS X のコマンド ラインsplitユーティリティも同様に動作します。

答え2

この問題の迅速な解決策を探している場合は、7zipまたは を特集した他の回答を参照してくださいsplitこれはむしろ楽しい解決。

これを実現するために、小さな Python 2 スクリプトを作成しました。


# 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()

答え3

別のオプション: splitGNU Coreutils のコマンドを使用します。

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

ファイルを 4 GB のチャンクに分割し、チャンクを出力ドライブに保存します。

チャンクを連結することで元のファイルを復元できます (ファイル名はアルファベット順に並べられます)。

使用方法については、splitマニュアル

Coreutils(を含む)はsplit、LinuxとMac OS Xではデフォルトでインストールされています。Windowsでは、GnuWin32から利用可能、または Cygwin から。

答え4

vfat で最大許容サイズ (2³²-1 バイト) のファイルを作成するには、次のコマンドを使用します (bash の場合)。

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

または、bash のインライン数式を使用しない場合は、次のようにします。

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

'--bytes=4G' は失敗します。4G は 2³² バイトに等しく、vFAT の最大ファイル サイズよりちょうど 1 バイト大きいためです。

関連情報