Eu tenho um monte de imagens de disco, feitas com ddrescue, em uma partição EXT, e quero reduzir o tamanho delas sem perder dados, enquanto ainda é montável.
Como posso preencher o espaço vazio no sistema de arquivos da imagem com zeros e depois converter o arquivo em um arquivo esparso para que esse espaço vazio não seja realmente armazenado no disco?
Por exemplo:
> du -s --si --apparent-size Jimage.image
120G Jimage.image
> du -s --si Jimage.image
121G Jimage.image
No entanto, na verdade, ele tem apenas 50 G de dados reais; portanto, a segunda medição deve ser muito menor.
Isso supostamente preencherá o espaço vazio com zeros:
cat /dev/zero > zero.file
rm zero.file
Mas se os arquivos esparsos forem manipulados de forma transparente , ele poderá realmente criar um arquivo esparso sem gravar nada no disco virtual, ironicamente, impedindo-me de transformar a imagem do disco virtual em um arquivo esparso. :) faz?
Nota: Por algum motivo, sudo dd if=/dev/zero of=./zero.file
funciona quando cat
não está em uma imagem de disco montada.
sudo cat /dev/zero > zero.file
não funciona porque o seu bash (executando como você, não como root) faz o redirecionamento antes de executar o sudo
comando. Veja unix.stackexchange.com/questions/1416/…