Aquí hay un cambio modificado y mucho más extendido de mi respuesta a su pregunta anterior:
sfill
desde el secure-delete
paquete puedes hacer lo que quieras.
A diferencia de zerofree (que funciona solo con los sistemas de archivos ext2, ext3 y ext4), sfill funcionará con cualquier sistema de archivos.
p.ej
sfill -l -l -z /mnt/X
La página de inicio sfill / secure-delete ahora parece haberse desvanecido, pero está empaquetada para debian y ubuntu. probablemente otras distribuciones también. si necesita código fuente, puede encontrarlo en los archivos de Debian si no puede encontrarlo en ningún otro lugar.
NOTA: sfill solo funciona en un sistema de archivos montado. Si no llena los archivos de imagen desde el sistema host en lugar de hacerlo desde una VM, deberá montar la imagen fs en el host. El método exacto varía según el tipo de archivo de imagen que sea (por ejemplo, qcow2 o raw).
Montar imágenes 'en bruto' es fácil y directo. Simplemente use kpartx
el archivo de imagen para crear un dispositivo de bucle invertido y / dev / mapper / entradas para cada partición se pueden montar individualmente.
Aquí hay una secuencia de comandos parcial modificada a partir de un fragmento de la secuencia de comandos que utilizo para montar imágenes de disco duro de red libre de arranque (utilizado para actualizaciones de BIOS en máquinas donde flashrom no funcionará):
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"
NOTA: se supone que cada partición de la imagen se puede montar. Es cierto en mi caso de uso (una imagen HD de Freedos con una partición). no es cierto si una de las particiones es, digamos, espacio de intercambio. Detectar tales particiones y usar dd para poner a cero la partición de intercambio se deja como ejercicio para el lector :)
Este método, o una variante del mismo, también debería funcionar para volúmenes LVM.
Si sus imágenes son qcow, entonces puede usar la qemu-nbd
herramienta del qemu-utils
paquete, que presentará el archivo de imagen y sus particiones como dispositivos de bloqueo de red, por ejemplo / dev / nbd0 / dev / ndb0p1, que puede usarse de manera similar a / dispositivos dev / mapper anteriores.
Es posible que sea más fácil y menos complicado (pero más lento) usar qemu-img
para convertir de qcow a raw, usar el método para raw anterior y luego convertir la imagen raw modificada de nuevo a qcow2 comprimido. Esto probablemente dará como resultado imágenes un poco más pequeñas que el uso de qemu-nbd, ya que comprimirá la nueva imagen qcow2 mientras se crea.
sfill
sugerencia ? Parece que no requiere extX.