Qual é o equivalente do console do seguinte código Python:
target = file("disk", "w") # create a file
target.seek(2*1024*1024*1024) # skip to 2 GB
target.write("\0")
target.close()
Talvez algum encantamento dd? A idéia é criar um arquivo com o tamanho aparente de 2 GB para uso, por exemplo, em virtualização.
kvm disk -cd whatever.iso #Only allocate space as necessary
files
dd
sparse-files
badp
fonte
fonte
dd
é a única ferramenta tradicional que expõe aseek
chamada do sistema (veja dd vs cat - o dd ainda é relevante hoje em dia? mas existem outras maneiras de esfolar esse gato em unidades atuais típicas.Respostas:
De um modo geral, basta usar
dd
; mas como você menciona o uso da virtualização KVM, considere usarqemu-img
:Faz o mesmo que o
dd
comando na resposta de Chris Down, efetivamente.Independentemente de qual comando você usar, para uso em virtualização, sugiro fortemente o uso
fallocate
para pré-alocar blocos para impedir a fragmentação e aumentar o desempenho.Porém, ele não está disponível em todas as plataformas e sistemas de arquivos. Isso não grava zeros, mas apenas atribui blocos ao arquivo, em vez de fazer isso sob demanda mais tarde, sempre que for necessário estender o arquivo.
fonte
qemu-img
edd
ambos executam uma chamada de sistema para definir o tamanho do arquivo (ftruncate), mas executam muito mais para carregar a si mesmos e às bibliotecas às quais estão vinculados. E, nesse sentido,dd
será muito mais eficaz do queqemu-img
(que é muito maior e está vinculado a muito mais bibliotecas). O GNUtruncate
será ainda mais eficaz.dd
também tem a vantagem de ser onipresente. Bom ponto sobrefallocate
embora.qemu-img
é apenas uma alternativa óbvia no uso da virtualização KVM.Você pode criar um arquivo esparso como este com
dd
:fonte
2G
é uma extensão GNU paradd
. Você pode usarbs=1024 seek=2097152
se não tiver o GNUdd
.G
é uma extensão, e não é suportado pela versão do OpenBSD de dd ... mas,M
eK
são suportadas, talvez por issoseek=2048M
é um pouco mais legível, dependendo do que você está plataformas direcionados aVeja também o
truncate
comando GNU :fonte