Что такое консольный эквивалент следующего кода Python:
target = file("disk", "w") # create a file
target.seek(2*1024*1024*1024) # skip to 2 GB
target.write("\0")
target.close()
Может быть, какое-то дд заклинание? Идея заключается в создании файла с видимым размером 2 ГБ для использования, например, в виртуализации.
kvm disk -cd whatever.iso #Only allocate space as necessary
files
dd
sparse-files
badp
источник
источник
dd
это единственный традиционный инструмент, который разоблачаетseek
системный вызов (см. dd vs cat - dd все еще актуален в наши дни? но есть и другие способы обработать эту кошку на типичных текущих единицах.Ответы:
Вообще говоря, просто используйте
dd
; но, как вы упоминаете об использовании виртуализации KVM, вы можете рассмотреть возможность использованияqemu-img
:Это делает то же самое, что
dd
команда в ответе Криса Дауна, эффективно.Независимо от того, какую команду вы используете для виртуализации, я настоятельно рекомендую использовать
fallocate
предварительное распределение блоков, чтобы предотвратить фрагментацию и повысить производительность.Однако он доступен не на всех платформах и файловых системах. Это не будет записывать нули, а просто назначит блоки файлу, а не делать это по требованию позже каждый раз, когда ему нужно расширить файл.
источник
qemu-img
иdd
оба выполняют один системный вызов, чтобы установить размер файла (ftruncate), но выполняют гораздо больше, чтобы загрузить себя и библиотеки, с которыми они связаны. И в этом отношенииdd
он будет намного более эффективным, чемqemu-img
(который намного больше и связан с гораздо большим количеством библиотек). GNUtruncate
будет еще более эффективным.dd
также имеет преимущество в том, что вездесущий. Хороший вопрос о том,fallocate
хотя.qemu-img
это просто очевидная альтернатива в использовании виртуализации KVM.Вы можете создать разреженный файл следующим образом
dd
:источник
2G
является расширением GNU дляdd
. Вы можете использовать,bs=1024 seek=2097152
если у вас нет GNUdd
.G
это расширение, и оно не поддерживается версией OpenBSD dd ... но,M
иK
поддерживается, поэтому, возможно,seek=2048M
немного более читабельно, в зависимости от того, на какие платформы выСмотрите также команду GNU
truncate
:источник