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