Mam dysk twardy USB.
Chcę go zamontować z włączoną kompresją. Mogę to zrobić w fstab mojego systemu lub nawet używając reguł udev. Problem polega na tym, że nie mogę zamontować dysku twardego USB tylko na moim komputerze. Do tej pory wyzwalałem terminal za każdym razem, gdy go montowałem.
Następnie odkryłem chattr +c
. Działa bardzo dobrze , ale Chcę używać LZO zamiast ZLIB. Czy jest jakiś sposób aby być bardziej szczegółowym i zdefiniować algorytm kompresji raz na zawsze?
Odpowiedź
btrfs skompresuje każdy plik zmieniony od momentu zamontowania jeśli używasz:
mount -o compress-force=lzo /dev/btrfsdev /mnt/btrfsmnt
Jeśli chcesz zobaczyć, że WSZYSTKIE pliki są kompresowane w ten sposób, mam mały skrypt, który napisałem, aby to zrobić …
du -ht +$((1024*1024)) "$HOME" |\ sed -rn "s/^[^/]*(.*)/btrfs fi defrag -fvclzo "\1"/p" |\ sudo sh -n
Powyższe działa tylko w moim katalogu $HOME
– ale możesz go używać na czymkolwiek lub wszystkim, jak chcesz. Dostał również operand -n
przekazany do sh
w takiej postaci możesz sam zobaczyć, czym sh
jest obecnie not
przed usunięciem, aby to zrobić.
W każdym razie najpierw zapyta du
dla plików w formacie human-readable
(prawdopodobnie zbędny tutaj, ponieważ usuwamy go w następnym kroku tak czy inaczej) które są większe niż 1MB
lub $((1024*1024)).
|pipes
jego informacje są sed
, które z wszystkiego przed początkową nazwą pliku /, "quotes"
, tworzy polecenie btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename
i przekazuje go |pipe
do sudo sh
w celu wykonania.
Znowu nic nie zrobi, dopóki sh --no-execute
będzie działać.
Myślę, że bardzo niedawne btrfs
kompilacje narzędzi w przestrzeni użytkownika defragmentują rekursywnie całe katalogi, ale jeśli tak, jest to całkiem nowa rzecz, więc zawsze musiałem robić takie rzeczy.
Komentarze
Odpowiedź
Z tego, co przeczytałem, możesz ustawić właściwość compression
w katalogu głównym woluminu na osiągnąć ten cel [0, 1]:
sudo btrfs property set /mnt/your-subvolume compression lzo
Po pobraniu identyfikatora UUID woluminu Btrfs za pomocą sudo btrfs filesystem show /mnt/your-subvolume
, możesz następnie sprawdź, czy funkcja kompresji LZO jest obecnie włączona z:
cat /sys/fs/btrfs/<UUID>/features/compress_lzo
Powinien zwrócić 1, jeśli jest włączony.
[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
jest wystarczające, nie ' nie trzeba ponownie kompresować skompresowanych plików binarnych, takich jak PNG.