Tengo un montón de imágenes de disco, hechas con ddrescue, en una partición EXT, y quiero reducir su tamaño sin perder datos, sin dejar de ser montable.
¿Cómo puedo llenar el espacio vacío en el sistema de archivos de la imagen con ceros y luego convertir el archivo en un archivo disperso para que este espacio vacío no se almacene en el disco?
Por ejemplo:
> du -s --si --apparent-size Jimage.image
120G Jimage.image
> du -s --si Jimage.image
121G Jimage.image
Sin embargo, esto en realidad solo tiene 50G de datos reales, por lo que la segunda medición debería ser mucho más pequeña.
Esto supuestamente llenará el espacio vacío con ceros:
cat /dev/zero > zero.file
rm zero.file
Pero si los archivos dispersos se manejan de manera transparente , en realidad podría crear un archivo disperso sin escribir nada en el disco virtual, irónicamente evitando que convierta la imagen del disco virtual en un archivo disperso. :) ¿Lo hace?
Nota: Por alguna razón, sudo dd if=/dev/zero of=./zero.file
funciona cuando cat
no funciona en una imagen de disco montada.
sudo cat /dev/zero > zero.file
no funciona porque su bash (que se ejecuta como usted, no root) realiza la redirección antes de ejecutar el sudo
comando. Ver unix.stackexchange.com/questions/1416/…