"Разреженные" файлы - это файлы с пустыми пробелами, которые предположительно заполнены нулями, но для которых этого предположения достаточно, чтобы продолжить. То есть, если вы прочитаете файл, вы получите нули, но, поскольку мы знаем, что это нули, нам фактически не нужно выписывать нули на 8 ГБ. Достаточно сказать: «Давайте просто согласимся, что здесь есть большой файл, фактически не выделяя для него места».
Когда вы перезаписываете пустое содержимое файла, блоки размещаются на диске для размещения того, что вы храните (поскольку вы больше не можете предполагать, что это просто нули). Но если вы добавляете файл, вы ничего не перезаписываете. Вы просто добавляете больше к концу. Таким образом, добавляя, вы размещаете блоки на диске, но эти блоки не заменяют ваши существующие "воображаемые" блоки; вместо этого, те, которые вы создаете, добавляются в конце, после воображаемых.
Вы можете даже добавить больше воображаемых блоков, используя аналогичную операцию dd -skip
вы использовали для создания файла. "Мнимые" блоки не обязательно должны быть вместе. И фактически, когда вы перезаписываете существующие блоки в файле, будут выделены только те блоки, которые вы перезаписали, независимо от того, где они появляются в файле. То есть, запись блока в позиции 101 не будет автоматически распределять и заполнять нулями блоки с 1 по 99.