Criando Junk Files Com O Comando dd

Introdução

Recentemente, precisei criar arquivos com tamanhos específicos e com conteúdo completamente aleatório, cuja finalidade era testar alguns comandos do sistema. Pesquisando um pouco, notei que essa tarefa é também bastante comum e essencial para se testar algoritmos de compressão, velocidade de transmissão em rede, manuseio de quotas e várias outras.

O comando dd, bastante conhecido no ambiente *nix, pode ser usado para se criar arquivos de conteúdo aleatório e com um determinado tamanho. Embora esse comando não seja o mais ideal para isso [1] por existir alternativas mais velozes (ex: fallocate), ele parece ser o mais portável por estar presente em quase todos sistemas unix-like e por isso será adotado aqui.

Criando junk files

Uma maneira de criarmos um arquivo de determinado tamanho é utilizando o dd em cima do dispositivo /dev/urandom e alterando seus parâmetros bs e count para obtermos o tamanho necessário.

O seguinte comando cria um arquivo de 100MB:

$ dd if=/dev/urandom of=arquivo_100.bin bs=1M count=100
$ du -h arquivo_100.bin
100M    arquivo_100.bin

Um arquivo de 100MB foi criado. Em bs é possível passar indicadores de tamanhos como K, M e G para se indicar kilo bytes, mega bytes e giga bytes, respectivamente. Em count passamos o tamanho total do arquivo.

Para criarmos um arquivo de 1GB, fazemos:

$ dd if=/dev/urandom of=arquivo_1GB.bin bs=1G count=1

Com o arquivo criado, podemos por exemplo, ver quanto tempo é necessário para transferi-lo para outra máquina:

$ time scp arquivo_1GB.bin username@hostremoto:/home/usuario/arquivo_1GB.bin

Referências

[1] Quickly create a large file on a linux system? by stackoverflow (Acessado em: Novembro/2012)
http://stackoverflow.com/questions/257844/quickly-create-a-large-file-on-a-linux-system

[2] Why does dd from /dev/random give different file sizes? by stackexchange (Acessado em: Novembro/2012)
http://unix.stackexchange.com/questions/32988/why-does-dd-from-dev-random-give-different-file-sizes

[3] Create a junk file by WizRd (Acessado em: Novembro/2012)
http://blog.controlunlimited.net/?p=45

Deixe um comentário