6

Я видел следующий трюк для быстрого создания больших пустых файлов:

dd if=/dev/zero of=test.dat bs=1024 count=1024

Тем не менее, это по-прежнему занимает некоторое время при создании файлов с несколькими ГБ. Я предполагаю, что на этот раз преобладает диск, записывающий все \0 с из /dev/zero в test.dat .

Есть ли способ "мгновенно" создать файл произвольного размера, фактически не инициализируя его содержимое?

1 ответ1

12

Да, если ваша файловая система поддерживает разреженные файлы.

Ваш метод dd фактически создает файлы и заполняет созданный файл нулями. На самом деле нужно записать эти нули, и на это нужно время.

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

Если вы хотите попробовать это, используйте что-то вроде этого
dd seek=123456 if=/dev/null of=sparse-file bs=1M

(Позаботьтесь о резервном копировании и восстановлении с помощью программного обеспечения, которое не знает о редких файлах).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .