Crie um arquivo de teste com muitos bytes zero

24

Eu sei como criar um arquivo vazio:

touch /var/tmp/nullbytes

mas como posso criar um arquivo de 1MB que contém apenas nullbytes na linha de comando com o bash?

    
por rubo77 26.11.2013 / 11:51

2 respostas

54

Com o GNU truncate :

truncate -s 1M nullbytes

(assumindo que nullbytes não existia de antemão) criaria um arquivo esparso de 1 mebibyte. Esse é um arquivo que aparece preenchido com zeros, mas não ocupa nenhum espaço no disco.

Sem truncate , você pode usar dd :

dd bs=1048576 seek=1 of=nullbytes count=0

(com algumas implementações dd , você pode substituir 1048576 por 1M )

Se você preferir que o espaço em disco seja alocado , no Linux e em alguns sistemas de arquivos, você poderia fazer:

fallocate -l 1M nullbytes

Isso aloca o espaço sem realmente gravar dados no disco (o espaço é reservado, mas marcado como não inicializado).

dd < /dev/zero bs=1048576 count=1 > nullbytes

Na verdade, gravará os zeros no disco. Isso é o menos eficiente, mas se você precisa que suas unidades girem ao acessar esse arquivo, é essa que você deseja usar.

Ou a maneira de mikeserv enganar dd na geração de bytes NUL:

dd bs=1048576 count=1 conv=sync,noerror 0> /dev/null > nullbytes

Uma alternativa com o GNU head , que não envolve a necessidade de especificar um tamanho de bloco (1M está OK, mas 10G, por exemplo, não o faria):

head -c 1M < /dev/zero > nullbytes

Ou para obter uma barra de progresso:

pv -Ss 1M < /dev/zero > nullbytes
    
por 26.11.2013 / 12:51
27
dd if=/dev/zero of=/var/tmp/nullbytes count=1 bs=1M
    
por 26.11.2013 / 11:53