Ho un disco rigido USB.
Voglio montarlo con la compressione abilitata. Posso fare in fstab del mio sistema o anche usando le regole udev. Il problema è che non monterò il mio HDD USB solo sul mio computer. Fino ad ora, attivavo un terminale ogni volta che lo montavo.
Poi ho scoperto chattr +c
. Funziona molto bene ma voglio usare LZO invece di ZLIB. Cè un modo per essere più specifici e definire lalgoritmo di compressione una volta per tutte?
Risposta
btrfs comprimerà ogni file modificato da quando è stato montato se usi:
mount -o compress-force=lzo /dev/btrfsdev /mnt/btrfsmnt
Se vuoi fare in modo che TUTTI i file vengano compressi in questo modo, ho un piccolo script che ho scritto per farlo …
du -ht +$((1024*1024)) "$HOME" |\ sed -rn "s/^[^/]*(.*)/btrfs fi defrag -fvclzo "\1"/p" |\ sudo sh -n
Quanto sopra funziona solo sulla mia directory $HOME
, ma puoi usarlo su qualsiasi cosa o tutto come preferisci. Ha anche loperando -n
inviato a sh
così comè puoi vedere tu stesso cosa sh
è attualmente not
facendo prima di rimuoverlo per dirgli di farlo.
Comunque, prima interroga du
per i file in human-readable
formato (probabilmente ridondante qui poiché lo eliminiamo nel passaggio successivo comunque) che sono più grandi di 1MB
o $((1024*1024)).
|pipes
le sue informazioni a sed
che elimina da tutto ciò che precede il /, "quotes"
iniziale del nome del file, crea il comando btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename
e passa un |pipe
a sudo sh
per lesecuzione.
Di nuovo, non farà nulla fintanto che sh --no-execute
è attivo.
Penso che alcuni molto recenti btrfs
build di strumenti userspace deframmentano intere directory in modo ricorsivo, ma se è così è “una cosa abbastanza nuova, quindi ho” dovevo sempre fare cose del genere.
Commenti
Risposta
Da quello che ho letto, puoi impostare la proprietà compression
nella radice del sottovolume su raggiungere questo [0, 1]:
sudo btrfs property set /mnt/your-subvolume compression lzo
Dopo aver acquisito lUUID del sottovolume Btrfs con sudo btrfs filesystem show /mnt/your-subvolume
, puoi verifica che la funzione di compressione LZO sia attualmente abilitata con:
cat /sys/fs/btrfs/<UUID>/features/compress_lzo
Dovrebbe restituire 1 se è abilitata.
[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
è sufficiente, ' non è necessario ricomprimere i file binari compressi come PNG.