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.