web-dev-qa-db-ja.com

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

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

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

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

8
Alex

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

GNU/Linuxシステムでは、coreutilsパッケージの split および cat プログラムを使用できます(例:split -b 4294967295 FOO /media/FATDISK/BARを使用してFOOをBARaa、BARab、...に分割します)。およびcat /media/FATDISK/BAR?? > FOOを再アセンブルします)。 Mac OS Xのコマンドラインsplitユーティリティも同じように機能します。

10
PleaseStand

私はこれを達成するために小さな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()
5
Alex

別のオプション:GNU Coreutilsからのsplitコマンドを使用します:

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

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

元のファイルは、チャンクを連結することで復元できます(ファイル名はアルファベット順にソートされています)。

使用法については、 split manual を参照してください。

splitを含むCoreutilsは、LinuxおよびMac OS Xにデフォルトでインストールする必要があります。Windowsでは、 GnuWin32から入手可能 またはCygwinからインストールできます。

4

私はまさにこの問題を抱えており、すでに投稿されている回答の助けを借りてそれを解決しましたが、それらの1つが方法を正確に説明していませんでした。

使った

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

infileをoutprefixaa、outprefixab、outprefixacなどの名前の複数のファイルに最大サイズ3GBで保存します-Fat 32で4GBを使用しようとすると、失敗しました。

使用したファイルを再結合する

cat /media/FAT32drive/outprefix?? > infile

より具体的な詳細を提供するために、ウィンドウでこれを行いましたが、cygwinウィンドウを使用しました。したがって、私の場合、外部FAT32ハードディスクのファイルパスは/cydrive/e/

3
tom