Вот измененный и значительно расширенный репост моего ответа на ваш предыдущий вопрос:
sfill
из secure-delete
пакета можно делать что хочешь.
В отличие от zerofree (который работает только с файловыми системами ext2, ext3 и ext4), sfill будет работать с любой файловой системой.
например
sfill -l -l -z /mnt/X
Кажется, что домашняя страница sfill / secure-delete исчезла, но она упакована для Debian и Ubuntu. вероятно, другие дистрибутивы тоже. если вам нужен исходный код, его можно найти в архивах Debian, если вы не можете найти его где-либо еще.
ПРИМЕЧАНИЕ: sfill работает только на смонтированной файловой системе. Если вы заполняете файлы образов с нуля не из виртуальной машины, а из хост-системы, вам необходимо смонтировать образ fs на хосте. Точный метод зависит от типа файла изображения (например, qcow2 или raw).
Монтировать «сырые» изображения легко и просто. Просто используйте kpartx
файл образа для создания петлевого устройства, и / dev / mapper / записи для каждого раздела можно монтировать отдельно.
Вот частичный сценарий, модифицированный из фрагмента сценария, который я использую для монтирования образов жесткого диска с загрузкой по сети (используется для обновлений BIOS на компьютерах, где flashrom не работает):
image="myrawimagefile.img"
# use kpartx to build /dev/mapper device nodes
KP=$(kpartx -a -v "$image")
# now mount each partition under ./hd/
for p in $(echo "$KP" | awk '/^add map/ {print $3}') ; do
dm="/dev/mapper/$p"
fp=$(echo "$p" | sed -r -e 's/^loop[0-9]+//')
mkdir -p "./hd/$fp"
mount "$dm" "./hd/$fp"
sfill -l -l -v "./hd/$fp"
umount "$dm"
done
# now remove the loopback device and /dev/mapper entries
kpartx -d "$image"
ПРИМЕЧАНИЕ: предполагается, что каждый раздел на изображении является монтируемым. Истинно в моем случае использования (образ Freedos HD с одним разделом). Неверно, если один из разделов - это, скажем, пространство подкачки. Обнаружение таких разделов и использование dd для обнуления раздела подкачки оставлено в качестве упражнения для читателя :)
Этот метод или его вариант должен работать и для томов LVM.
Если ваши изображения qcow, вы можете использовать qemu-nbd
инструмент из qemu-utils
пакета, который представит файл изображения и его разделы в качестве сетевых блочных устройств - например, / dev / nbd0 / dev / ndb0p1 - который можно использовать аналогично / устройства dev / mapper выше.
Возможно, проще и менее хлопотно (но более трудоемко) использовать qemu-img
для преобразования из qcow в raw, использовать метод для raw выше, а затем преобразовать измененный необработанный образ обратно в сжатый qcow2. Это, вероятно, приведет к получению изображений немного меньшего размера, чем при использовании qemu-nbd, поскольку вы будете сжимать новое изображение qcow2 по мере его создания.
sfill
предложение ? Похоже, это не требует ExtX.