Как вы можете обрезать файлы с помощью командной строки?

Что такое консольный эквивалент следующего кода Python:

target = file("disk", "w") # create a file target.seek(2*1024*1024*1024) # skip to 2 GB target.write("\0") target.close() 

Может быть, какое-то заклинание dd? Идея заключается в создании файла с видимым размером 2 ГБ для использования, например, в виртуализации.

 kvm disk -cd whatever.iso #Only allocate space as necessary 

  • Как кошка «знает» оптимальный размер блока для использования?
  • оптимальное значение для bs в 'dd' для chrooted linux?
  • почему люди используют «notrunc» при создании ISO с DVD?
  • Почему dd меняет файловую систему на внешний диск?
  • Различия между dd в Mac OS X и Linux
  • dd vs cat - все еще актуальна в наши дни?
  • Проверить успешность команды в bash
  • Ошибка ввода-вывода при перезаписи всего диска
  • 3 Solutions collect form web for “Как вы можете обрезать файлы с помощью командной строки?”

    Вообще говоря, просто используйте dd , но, как вы упомянули об использовании виртуализации KVM, вы можете рассмотреть возможность использования qemu-img :

     qemu-img create -f raw disk 2G 

    Он делает то же самое, что и команда dd в ответ Криса Дауна.

    Независимо от того, какую команду вы используете для использования в виртуализации, я настоятельно рекомендую использовать fallocate для предварительного выделения блоков, чтобы предотвратить фрагментацию и повысить производительность.

     fallocate -l 2G disk 

    Тем не менее, он недоступен на всех платформах и файловых системах. Это не будет записывать нули, но просто назначает блоки файлу, а не делает это по требованию позже, каждый раз, когда он должен расширять файл.

    Вы можете создать разреженный файл, например, с помощью dd :

     dd of=file bs=1 seek=2G count=0 
     $ du file 0 disk $ du --apparent-size file 2097152 disk 

    См. Также команду обрезания GNU:

     truncate -s 2G some-file 
    Interesting Posts
    Linux и Unix - лучшая ОС в мире.