Jeg har en USB-harddisk.
Jeg vil montere den med komprimering aktiveret. Jeg kan gøre det i fstab på mit system eller endda bruge udev-regler. Problemet er, at jeg ikke kun monterer min USB HDD på min computer. Indtil nu plejede jeg at udløse en terminal, hver gang jeg monterede den.
Derefter opdagede jeg chattr +c
. Dette fungerer meget godt men Jeg vil bruge LZO i stedet for ZLIB. Er der nogen måde for at være mere specifik og definere komprimeringsalgoritmen en gang for alle?
Svar
btrfs komprimerer hver fil, der er ændret, siden den blev monteret hvis du bruger:
mount -o compress-force=lzo /dev/btrfsdev /mnt/btrfsmnt
Hvis du vil sørge for, at ALLE filer komprimeres på denne måde, har jeg et lille script, jeg skrev for at gøre det …
du -ht +$((1024*1024)) "$HOME" |\ sed -rn "s/^[^/]*(.*)/btrfs fi defrag -fvclzo "\1"/p" |\ sudo sh -n
Ovenstående fungerer kun i min $HOME
bibliotek – men du kan bruge det på noget eller alt, som du vil. Det fik også -n
operand til sh
som det er sådan du kan selv se, hvad sh
i øjeblikket er not
gør inden du fjerner det for at bede det om at gøre det.
Under alle omstændigheder spørger det først du
for filer i human-readable
format (sandsynligvis overflødigt her, da vi stripper det i næste trin alligevel) der er større end 1MB
eller $((1024*1024)).
Det |pipes
dets info til sed
hvilke strimler fra alt før det førende /, "quotes"
filnavnet, bygger kommandoen btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename
og afleverer det |pipe
til sudo sh
for at udføre.
Igen vil det ikke gøre noget, så længe sh --no-execute
er i kraft.
Jeg tror dog, at nogle meget nylige btrfs
brugerrumsværktøjsbygninger defragmenterer hele mapper rekursivt, men i så fald er det en ret ny ting, så jeg har havde altid gjort ting som dette.
Kommentarer
Svar
Fra det jeg læste, kan du indstille egenskaben compression
på roden af undervolumen til opnå dette [0, 1]:
sudo btrfs property set /mnt/your-subvolume compression lzo
Efter at have grebet dit Btrfs-undervolumen UUID med sudo btrfs filesystem show /mnt/your-subvolume
, kan du derefter validér, at LZO-komprimeringsfunktionen i øjeblikket er aktiveret med:
cat /sys/fs/btrfs/<UUID>/features/compress_lzo
Den skal returnere 1, hvis den er aktiveret.
[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 tilstrækkelig, du behøver ikke ' behøver ikke at komprimere komprimerede binære filer som PNG.