¿Cuál es el equivalente de la consola del siguiente código de Python?
target = file("disk", "w") # create a file
target.seek(2*1024*1024*1024) # skip to 2 GB
target.write("\0")
target.close()
Tal vez algún dd encantamiento? La idea es crear un archivo con el tamaño aparente de 2 GB para usar, por ejemplo, en la virtualización.
kvm disk -cd whatever.iso #Only allocate space as necessary
files
dd
sparse-files
badp
fuente
fuente

ddes la única herramienta tradicional que expone laseekllamada al sistema (ver dd vs cat - ¿dd sigue siendo relevante en estos días? pero hay otras formas de desollar a este gato en los dispositivos actuales típicos)Respuestas:
En términos generales, solo use
dd; pero al mencionar el uso de la virtualización KVM, podría considerar usarqemu-img:Hace lo mismo que el
ddcomando en la respuesta de Chris Down, efectivamente.Independientemente del comando que use, para usar en la virtualización, sugeriría encarecidamente usarlo
fallocatepara preasignar bloques para evitar la fragmentación y aumentar el rendimiento.Sin embargo, no está disponible en todas las plataformas y sistemas de archivos. Esto no escribirá ceros, sino que solo asignará bloques al archivo, en lugar de hacerlo a pedido cada vez que tenga que extender el archivo.
fuente
qemu-imgyddambos realizan una llamada al sistema para establecer el tamaño del archivo (ftruncate), pero realizarán mucho más para cargarse y las bibliotecas a las que están vinculados. Y, en ese sentido,ddserá mucho más efectivo queqemu-img(que es mucho más grande y está vinculado a muchas más bibliotecas). GNUtruncateva a ser aún más efectivo.ddTambién tiene la ventaja de ser omnipresente. Buen punto sobrefallocatesin embargo.qemu-imges solo una alternativa obvia en el uso de la virtualización KVM.Puede crear un archivo disperso como este con
dd:fuente
2Ges una extensión de GNU paradd. Puedes usarlobs=1024 seek=2097152si no tienes GNUdd.Ges una extensión, y no es compatible con la versión de dd de OpenBSD ... pero,MyKes compatible, por lo que tal vezseek=2048Msea un poco más legible, dependiendo de las plataformas a las que seVea también el
truncatecomando GNU :fuente