Fat32에 대용량 파일을 저장하는 방법

Fat32에 대용량 파일을 저장하는 방법

FAT32 드라이브(~18GB)에 대용량 비디오 파일을 저장하고 싶었지만 파일 시스템의 한계로 인해 이것이 단순히 가능하지 않다는 것을 발견했습니다.

파일을 저장 가능한 작은 부분으로 분할한 다음 보관된 파일을 검색하려고 할 때 다시 조립할 수 있는 간단한 도구가 있습니까?

아니면 FAT32에 대용량 파일을 저장하는 더 좋은 방법이 있습니까?

답변1

다음과 같은 대부분의 파일 아카이버7-Zip, 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

파일을 4GB 청크로 분할하고 해당 청크를 출력 드라이브에 저장합니다.

원본 파일은 청크를 연결하여(파일 이름을 알파벳순으로 정렬하여) 복구할 수 있습니다.

사용법 정보는 다음을 참조하세요.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

4G는 vFAT의 최대 파일 크기보다 정확히 1바이트 더 큰 2³²바이트이기 때문에 '--bytes=4G'는 실패합니다.

관련 정보