Ho un sacco di immagini del disco, realizzate con ddrescue, su una partizione EXT, e voglio ridurne le dimensioni senza perdere dati, pur essendo montabile.
Come posso riempire lo spazio vuoto nel filesystem dell'immagine con zeri e quindi convertire il file in un file sparso in modo che questo spazio vuoto non sia effettivamente archiviato sul disco?
Per esempio:
> du -s --si --apparent-size Jimage.image
120G Jimage.image
> du -s --si Jimage.image
121G Jimage.image
Questo in realtà ha solo 50 G di dati reali su di esso, tuttavia, quindi la seconda misurazione dovrebbe essere molto più piccola.
Questo presumibilmente riempirà lo spazio vuoto di zeri:
cat /dev/zero > zero.file
rm zero.file
Ma se i file sparsi vengono gestiti in modo trasparente , potrebbe effettivamente creare un file sparse senza scrivere nulla sul disco virtuale, impedendomi ironicamente di trasformare l'immagine del disco virtuale in un file sparse stesso. :) Lo fa?
Nota: per qualche motivo, sudo dd if=/dev/zero of=./zero.file
funziona quando cat
non è presente su un'immagine disco montata.
sudo cat /dev/zero > zero.file
non funziona perché bash (in esecuzione come te, non root) esegue il reindirizzamento prima di eseguire il sudo
comando. Vedi unix.stackexchange.com/questions/1416/…