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=lzois voldoende, ' hoeft u gecomprimeerde binaire bestanden zoals PNG niet opnieuw te comprimeren.