É possível 'instantaneamente' criar arquivos arbitrários?

6

Eu vi o seguinte truque para criar arquivos grandes e vazios rapidamente:

dd if=/dev/zero of=test.dat bs=1024 count=1024

No entanto, isso ainda leva algum tempo ao criar arquivos com vários GB. Eu presumo que esse tempo seja dominado pelo disco escrevendo todos os /dev/zero s de test.dat para %code% .

Existe alguma maneira de "instantaneamente" criar um arquivo de tamanho arbitrário, sem realmente inicializar seu conteúdo para qualquer coisa?

    
por ChrisB 07.08.2012 / 18:27

1 resposta

12

Sim, se o seu sistema de arquivos suportar arquivos esparsos .

Seu método dd cria os arquivos e preenche o arquivo criado com zero. Na verdade, tem que escrever esses zeros e isso leva tempo.

Se você 'pular' adiante no arquivo sem escrever, ainda criará um arquivo aparentemente grande, sem realmente gravar no arquivo. Como esse arquivo grande não consome, na verdade, espaço em disco, é até possível criar arquivos maiores do que o que o FS permite.

Se você quiser tentar isso, use algo parecido com isso% dd seek=123456 if=/dev/null of=sparse-file bs=1M

(Tome cuidado com backups e restaure com um software que não tenha conhecimento de arquivos esparsos).

    
por 07.08.2012 / 18:33

Tags