Como armazenar arquivos grandes no Fat32

7

Eu queria armazenar um arquivo de vídeo grande em uma unidade FAT32 (~ 18 GB), mas descobri que isso não é simplesmente possível devido às limitações do sistema de arquivos.

Existe uma ferramenta simples que existe para dividir o arquivo em partes menores que podem ser armazenadas e, em seguida, remontá-las quando eu gostaria de recuperar o arquivo arquivado?

Ou existe uma maneira melhor de armazenar arquivos grandes no FAT32?

    
por Alex 21.09.2012 / 05:01

4 respostas

10

A maioria dos arquivadores de arquivos, como o 7-Zip , o WinZip e o WinRAR, permitem que você divida um arquivo em vários arquivos . Se a velocidade for importante, você pode tentar desativar a parte de compressão do programa.

Em sistemas GNU / Linux, você pode usar a divisão e < href="https://www.gnu.org/software/coreutils/manual/html_node/cat-invocation.html"> cat programas do pacote coreutils (por exemplo, split -b 4294967295 FOO /media/FATDISK/BAR para dividir o FOO em BARaa, BARab, ... e cat /media/FATDISK/BAR?? > FOO para remontá-lo). A linha de comando split do Mac OS X funciona da mesma maneira.

    
por 22.09.2012 / 04:30
5

Acabei de escrever um pequeno script do Python 2 para conseguir isso.

# 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()
    
por 21.09.2012 / 05:02
2

Outra opção: use o comando split do GNU Coreutils:

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

para dividir o arquivo em partes de 4 GB e salvar os blocos na unidade de saída.

O arquivo original pode ser recuperado concatenando as partes (com nomes de arquivos ordenados alfabeticamente).

Para informações de uso, consulte o split manual .

O Coreutils, incluindo split , deve ser instalado por padrão no Linux e no Mac OS X. No Windows, o está disponível em GnuWin32 ou do Cygwin.

    
por 22.09.2012 / 05:42
2

Eu tive exatamente esse problema e o resolvi usando a ajuda das respostas já postadas, mas nenhum deles descreveu o método exatamente.

eu usei

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

que salva o arquivo morto em múltiplos arquivos nomeados outprefixaa, outprefixab, outprefixac etc. com tamanho máximo de 3GB - quando tentei usar 4GB no Fat 32 ele falhou.

para recombinar os arquivos que usei

cat /media/FAT32drive/outprefix?? > infile

Para dar detalhes mais específicos, fiz isso no Windows, mas usando uma janela do cygwin. Então, o caminho do arquivo no meu caso para o disco rígido externo FAT32 foi /cydrive/e/

    
por 18.01.2015 / 00:48

Tags