Eu tenho um HDD USB.
Quero montá-lo com a compressão habilitada. Posso fazer no fstab do meu sistema ou até mesmo usando as regras do udev. O problema é que não irei montar meu HDD USB apenas no meu computador. Até agora, costumava acionar um terminal cada vez que o montava.
Então, descobri chattr +c
. Isso está funcionando muito bem mas eu quero usar LZO em vez de ZLIB. Existe alguma maneira para ser mais específico e definir o algoritmo de compressão de uma vez por todas?
Resposta
O btrfs comprimirá cada arquivo alterado desde que foi montado se você usar:
mount -o compress-force=lzo /dev/btrfsdev /mnt/btrfsmnt
Se você quiser 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 "\1"/p" |\ sudo sh -n
O acima só funciona no meu diretório $HOME
– mas você pode usá-lo em qualquer coisa ou em tudo que quiser. Ele também tem o operando -n
alimentado para sh
como está você pode ver por si mesmo o que sh
é atualmente not
fazendo antes de removê-lo para instruí-lo a fazer isso.
De qualquer forma, primeiro ele consulta du
para arquivos no formato human-readable
(provavelmente redundante aqui, pois o removemos na próxima etapa de qualquer maneira) que são maiores do que 1MB
ou $((1024*1024)).
É |pipes
suas informações para sed
que retira desligar tudo antes do /, "quotes"
principal do nome do arquivo, construir o comando btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename
e passe-o para um |pipe
para sudo sh
para executar.
Mais uma vez, não fará nada enquanto sh --no-execute
estiver em vigor.
Acho que muito recente btrfs
compilações de ferramentas de espaço do usuário desfragmentam diretórios inteiros recursivamente, mas se for assim, é uma coisa muito nova, sempre teve que fazer coisas assim.
Comentários
Resposta
Pelo que li, você pode definir a propriedade compression
na raiz do subvolume para conseguir isso [0, 1]:
sudo btrfs property set /mnt/your-subvolume compression lzo
Depois de pegar seu UUID de subvolume Btrfs com sudo btrfs filesystem show /mnt/your-subvolume
, você pode então valide se o recurso de compactação LZO está habilitado atualmente com:
cat /sys/fs/btrfs/<UUID>/features/compress_lzo
Deve retornar 1 se estiver habilitado.
[0] https://btrfs.wiki.kernel.org/index.php/Compression
[1] https://www.berthon.eu/2016/setting-shared-folder-compression-on-synology-nas-btrfs/
compress=lzo
é suficiente, você não ' não precisa compactar novamente os arquivos binários compactados como PNG.