Ik heb een USB HDD.
Ik wil het mounten met compressie ingeschakeld. Ik kan doen in de fstab van mijn systeem of zelfs met udev-regels. Het probleem is dat ik mijn USB-harde schijf niet alleen op mijn computer monteer. Tot nu toe activeerde ik een terminal elke keer dat ik hem koppelde.
Toen ontdekte ik chattr +c
. Dit werkt heel goed maar Ik wil LZO gebruiken in plaats van ZLIB. Is er een manier om specifieker te zijn en het compressie-algoritme voor eens en voor altijd te definiëren?
Antwoord
btrfs comprimeert elk bestand dat is gewijzigd sinds het is aangekoppeld als je gebruikt:
mount -o compress-force=lzo /dev/btrfsdev /mnt/btrfsmnt
Als je ervoor wilt zorgen dat ALLE bestanden op deze manier worden gecomprimeerd, heb ik een klein script dat ik heb geschreven om het te doen …
du -ht +$((1024*1024)) "$HOME" |\ sed -rn "s/^[^/]*(.*)/btrfs fi defrag -fvclzo "\1"/p" |\ sudo sh -n
Het bovenstaande werkt alleen op mijn $HOME
directory – maar je kunt het op alles of alles gebruiken zoals je wilt. Het heeft ook de -n
operand meegegeven aan sh
zoals het is u kunt zelf zien wat sh
momenteel not
doen alvorens het te verwijderen om het te vertellen.
Hoe dan ook, het vraagt eerst du
voor bestanden in human-readable
formaat (waarschijnlijk overbodig omdat we dat in de volgende stap verwijderen hoe dan ook) die groter zijn dan 1MB
of $((1024*1024)).
Het |pipes
zijn informatie naar sed
die uit alles vóór het voorloop /, "quotes"
de bestandsnaam, bouwt het btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename
commando en geeft het een |pipe
aan sudo sh
om uit te voeren.
Nogmaals, het zal “niets doen zolang sh --no-execute
van kracht is.
Ik denk dat sommige zeer recente btrfs
gebruikersruimtetool builds defragmenteren hele mappen recursief, maar als dat zo is, is het een vrij nieuw ding, dus ik moest altijd dit soort dingen doen.
Opmerkingen
Answer
Van wat ik heb gelezen, kun je de eigenschap compression
in de root van het subvolume instellen op bereik dit [0, 1]:
sudo btrfs property set /mnt/your-subvolume compression lzo
Nadat je je Btrfs-subvolume UUID hebt gepakt met sudo btrfs filesystem show /mnt/your-subvolume
, kun je valideer dat de LZO-compressiefunctie momenteel is ingeschakeld met:
cat /sys/fs/btrfs/<UUID>/features/compress_lzo
Het zou 1 moeten retourneren als het is ingeschakeld.
[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
is voldoende, ' hoeft u gecomprimeerde binaire bestanden zoals PNG niet opnieuw te comprimeren.