Jeg har en USB HDD.
Jeg vil montere den med komprimering aktivert. Jeg kan gjøre det i fstab av systemet mitt eller til og med bruke udev-regler. Problemet er at jeg ikke bare vil montere USB-harddisken på datamaskinen min. Inntil nå pleide jeg å utløse en terminal hver gang jeg monterte den.
Så oppdaget jeg chattr +c
. Dette fungerer veldig bra men Jeg vil bruke LZO i stedet for ZLIB. Er det noen måte å være mer spesifikk og definere komprimeringsalgoritmen en gang for alle?
Svar
btrfs vil komprimere hver fil som er endret siden den ble montert hvis du bruker:
mount -o compress-force=lzo /dev/btrfsdev /mnt/btrfsmnt
Hvis du vil sørge for at ALLE filer blir komprimert på denne måten, har jeg et lite skript jeg skrev for å gjøre det …
du -ht +$((1024*1024)) "$HOME" |\ sed -rn "s/^[^/]*(.*)/btrfs fi defrag -fvclzo "\1"/p" |\ sudo sh -n
Ovennevnte fungerer bare på $HOME
-katalogen min – men du kan bruke den på hva som helst eller hva du vil. Det fikk også -n
operand til sh
som det er slik du kan selv se hva sh
for øyeblikket er not
gjør det før du fjerner det for å be det gjøre.
Uansett spør det du
for filer i human-readable
format (sannsynligvis overflødig her siden vi striper det i neste trinn uansett) som er større enn 1MB
eller $((1024*1024)).
Det |pipes
det er informasjonen til sed
hvilke striper av alt før det ledende /, "quotes"
filnavnet, bygger btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename
kommandoen og overlater en |pipe
til sudo sh
for å utføre.
Igjen vil den ikke gjøre noe så lenge sh --no-execute
er i kraft.
Jeg tror noen veldig nylige btrfs
brukerstedsverktøy bygger defragmenterer hele kataloger rekursivt, men i så fall er det en ganske ny ting, så jeg har måtte alltid gjøre ting som dette.
Kommentarer
Svar
Fra det jeg leste, kan du sette egenskapen compression
på roten til undervolumet oppnå dette [0, 1]:
sudo btrfs property set /mnt/your-subvolume compression lzo
Etter å ha tatt tak i Btrfs-undervolumet UUID med sudo btrfs filesystem show /mnt/your-subvolume
, kan du validere at LZO-komprimeringsfunksjonen for øyeblikket er aktivert med:
cat /sys/fs/btrfs/<UUID>/features/compress_lzo
Den skal returnere 1 hvis den er aktivert.
[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
er tilstrekkelig, du trenger ikke ' ikke trenger å komprimere komprimerte binære filer som PNG.