O btrfs irá compactar todos os arquivos alterados desde que foi montado, se você usar:
mount -o compress-force=lzo /dev/btrfsdev /mnt/btrfsmnt
Se você quiser fazer com que TODOS os arquivos sejam compactados dessa forma, eu tenho um pequeno script que escrevi para fazer isso ...
du -ht +$((1024*1024)) "$HOME" |\
sed -rn 's/^[^/]*(.*)/btrfs fi defrag -fvclzo ""/p' |\
sudo sh -n
O acima só funciona no meu diretório $HOME
- mas você pode usá-lo em qualquer coisa ou em tudo como quiser. Ele também tem o operando -n
alimentado para sh
, assim você pode ver por si mesmo o que sh
é atual > not
fazendo antes de removê-lo para dizer para fazer isso.
De qualquer forma, primeiro ele consulta du
para arquivos no formato human-readable
(provavelmente redundantes aqui, já que retiramos isso na próxima etapa) que são maiores que 1MB
ou $((1024*1024)).
É |pipes
sua informação para sed
, que retira tudo antes do início /, "quotes"
do nome do arquivo, cria o < em> btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename
comando e passa para |pipe
para sudo sh
para executar.
Mais uma vez, não fará nada desde que sh --no-execute
esteja em vigor.
Acho que alguma muito recente btrfs
ferramenta userspace constrói desfragmentar diretórios inteiros de forma recursiva, mas se for assim é uma coisa muito nova, então eu sempre tive que faça coisas assim.