Como criar um sistema de arquivos de baixa sobrecarga

4

Eu tenho chaveiro USB com tamanho de 7.5GB e eu preciso copiar arquivo com tamanho de 7.4GB. Mas eu não posso porque superblocos consomem 0,5 GB de espaço.

    
por kravemir 06.10.2012 / 20:24

2 respostas

5

Você não precisa de um sistema de arquivos para gravar dados em um dispositivo. Você pode simplesmente usar tar para criar um arquivo que armazene sua estrutura de diretórios e todos os metadados e escreva isso no dispositivo.

Escrever dados

Aqui sdb é um exemplo da unidade USB no meu sistema, ajuste de acordo com sua configuração.

tar cf /dev/sdb <some_directory>

Leitura de dados

Você pode usar diretamente o tar para ler os dados do dispositivo:

tar xf /dev/sdb

Nos meus experimentos, isso sempre lê o dispositivo de bloco inteiro, não apenas os dados no arquivo tar. Se você sabe que seu dispositivo tem 8 GiB, mas você salvou apenas, digamos, 3 GiB, você pode usar dd para evitar a leitura de todo o dispositivo:

dd if=/dev/sdb bs=1M count=3072 | tar xf -

Notas laterais

Tente compactar os dados o máximo possível. Isso pode levar muito tempo, mas talvez tudo se encaixe em um drive com um sistema de arquivos comum. Eu aconselharia usar 7-Zip , é lento, mas tem uma alta taxa de compressão. Aqui está um exemplo:

7za a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z <some_directory>
    
por 07.10.2012 / 11:58
5

Como você realmente não precisa de um sistema de arquivos ext4, mas está realmente perguntando sobre um sistema de arquivos que trará a sobrecarga para baixo de aproximadamente 1.3% da capacidade do dispositivo (100 MB de 7,5 GB), várias opções de baixa sobrecarga. Os dois mais óbvios que atendem aos seus critérios de poder manipular um único arquivo de 7,4 GB são ext2 com uma baixa contagem de inodes e superblocos esparsos, ou um sistema de arquivos FAT32 de baixa sobrecarga.

EDITAR: Parece que eu estava errado sobre o tamanho máximo de arquivo do FAT32, mas eu estou deixando aqui caso alguém se depare com isso e possa viver com a limitação de que um único arquivo não pode ser maior de 2 ^ 32 - 1 (4 GiB - 1) bytes.

Para um sistema de arquivos ext2 de baixa sobrecarga, tente algo nos moldes de mke2fs -t ext2 -N 8 -O sparse_super . O -N 8 especifica o número de inodes no sistema de arquivos. Eu não sei o quão baixo isso vai, então esse botão pode exigir um pouco de movimento.

Para um sistema de arquivos FAT32 de baixa sobrecarga, tente algo como mkdosfs -F 32 -f 1 -r 8 -S 32768 -s 128 -a . Isso criará um -F 32 FAT32 (que permite o tamanho do arquivo que você precisa), com -f 1 um único FAT, -r 8 8 entradas do diretório raiz, -S 32768 um tamanho do setor lógico de 32 KiB, -s 128 128 setores por cluster (você pode aumentar ainda mais isso) e -a desativar o alinhamento da estrutura de dados.

    
por 06.10.2012 / 21:12