J'ai un tas d'images de disque, faites avec ddrescue, sur une partition EXT, et je veux réduire leur taille sans perdre de données, tout en étant montable.
Comment puis-je remplir l'espace vide du système de fichiers de l'image avec des zéros, puis convertir le fichier en fichier clairsemé afin que cet espace vide ne soit pas réellement stocké sur le disque?
Par exemple:
> du -s --si --apparent-size Jimage.image
120G Jimage.image
> du -s --si Jimage.image
121G Jimage.image
Cela n'a en fait que 50 G de données réelles, donc la deuxième mesure devrait être beaucoup plus petite.
Cela remplira censément l'espace vide avec des zéros:
cat /dev/zero > zero.file
rm zero.file
Mais si les fichiers clairsemés sont traités de manière transparente , cela peut en fait créer un fichier clairsemé sans écrire quoi que ce soit sur le disque virtuel, ce qui m'empêche ironiquement de transformer l'image de disque virtuel en un fichier clairsemé lui-même. :) Est-ce que c'est?
Remarque: Pour une raison quelconque, sudo dd if=/dev/zero of=./zero.file
fonctionne lorsque cat
ne se trouve pas sur une image disque montée.
sudo cat /dev/zero > zero.file
ne fonctionne pas car votre bash (qui s'exécute comme vous, pas root) fait la redirection avant d'exécuter la sudo
commande. Voir unix.stackexchange.com/questions/1416/…