Criação rápida de arquivos linux

7

Eu quero criar um arquivo vazio (não pode ser zerado) no sistema de arquivos ext4. Eu posso fazer isso com:

dd if=/dev/zero of=file count=xxxx

Mas demora um pouco se x estiver por volta de 0,5T. Eu suponho que há uma maneira de criar esse arquivo rapidamente. Pode conter rabiscos, não importa.

    
por silk 03.03.2010 / 14:17

3 respostas

8

Você pode criar um arquivo esparso, mas pode não ter os resultados desejados dependendo de por que está fazendo isso:

dd if=/dev/zero of=sparse_file bs=1 count=1 seek=512M

ls -l sparse_file        
-rw-rw-r-- 1 kbrandt kbrandt 536870913 2010-03-03 08:30 sparse_file

O problema é que, se um programa não souber como lidar com arquivos esparsos, quando você copiar o arquivo, ele será preenchido com zeros. Por exemplo, consulte esta postagem anterior do servidor . Você também pode ver a diferença com du :

[kbrandt@kbrandt-opadmin: /bigfiles] du sparse_file
12  sparse_file
[kbrandt@kbrandt-opadmin: /bigfiles] du sparse_file --apparent-size
524289  sparse_file
[kbrandt@kbrandt-opadmin: /bigfiles] #cat is not sparse aware, watch what happens
[kbrandt@kbrandt-opadmin: /bigfiles] cat sparse_file > sparse_file2 
[kbrandt@kbrandt-opadmin: /bigfiles] du sparse_file2
524808  sparse_file2

Por fim, se você quiser realmente colocar os zeros, se você definir um bs mais alto, pode ser um pouco mais rápido, como bs = 4096. Aqui está um link para alguém que realmente fez alguns benchmarks com tamanhos de bloco dd.

    
por 03.03.2010 / 14:32
4

Um arquivo esparso seria suficiente?

% dd if=/dev/zero of=sparsefile bs=1k seek=500M count=1
1+0 records in
1+0 records out
1024 bytes transferred in 0.000224 secs (4569114 bytes/sec)

% ls -lh sparsefile
-rw-------  1 james  james   500G  3 Mar 13:30 sparsefile
    
por 03.03.2010 / 14:32
2

Uso:

truncate -s 500G filename

É realmente rápido se o seu sistema de arquivos suporta arquivos esparsos.

O conteúdo do arquivo é zerado, sempre. O Linux não permitirá que você reutilize setores de disco sem zerá-los, já que isso é um risco de segurança. Para arquivos esparsos, os setores são alocados apenas quando são gravados pela primeira vez.

    
por 03.03.2010 / 15:08