Jag har en USB-hårddisk.
Jag vill montera den med komprimering aktiverad. Jag kan göra i mitt system eller ens använda udev-regler. Problemet är att jag inte bara monterar min USB-hårddisk på min dator. Fram till nu brukade jag utlösa en terminal varje gång jag monterade den.
Sedan upptäckte jag chattr +c
. Detta fungerar mycket bra men Jag vill använda LZO istället för ZLIB. Finns det något sätt för att vara mer specifik och definiera komprimeringsalgoritmen en gång för alla?
Svar
btrfs komprimerar varje fil som ändrats sedan den var monterad om du använder:
mount -o compress-force=lzo /dev/btrfsdev /mnt/btrfsmnt
Om du vill se till att ALLA filer komprimeras på det här sättet har jag ett litet skript som jag skrev för att göra det …
du -ht +$((1024*1024)) "$HOME" |\ sed -rn "s/^[^/]*(.*)/btrfs fi defrag -fvclzo "\1"/p" |\ sudo sh -n
Ovanstående fungerar bara i min $HOME
katalog – men du kan använda den på vad som helst eller vad du vill. Det fick också -n
operand till sh
som det är så du kan själv se vad sh
för närvarande är not
gör innan du tar bort den för att be den göra.
Hur som helst, först frågar den du
för filer i human-readable
format (förmodligen överflödigt här eftersom vi tar bort det i nästa steg hur som helst) som är större än 1MB
eller $((1024*1024)).
Det |pipes
dess information till sed
vilka remsor av allt före det ledande /, "quotes"
filnamnet, bygger kommandot btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename
och överlämnar en |pipe
till sudo sh
att utföra.
Återigen kommer det inte att göra någonting så länge som sh --no-execute
är i kraft.
Jag tror att vissa mycket senaste btrfs
användarutrymmeverktygsbyggningar defragmenterar hela kataloger rekursivt, men i så fall är det en ganska ny sak, så jag har var alltid tvungen att göra saker som detta.
Kommentarer
Svar
Från vad jag läser kan du ställa in egenskapen compression
på roten till undervolymen uppnå detta [0, 1]:
sudo btrfs property set /mnt/your-subvolume compression lzo
Efter att ha tagit din Btrfs-undervolym UUID med sudo btrfs filesystem show /mnt/your-subvolume
kan du sedan bekräfta att LZO-komprimeringsfunktionen för närvarande är aktiverad med:
cat /sys/fs/btrfs/<UUID>/features/compress_lzo
Den ska returnera 1 om den är aktiverad.
[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
räcker, du behöver inte ' för att komprimera komprimerade binära filer som PNG.