USBHDDを持っています。
圧縮を有効にしてマウントしたい。システムのfstabで、またはudevルールを使用して実行できます。問題は、USBHDDを自分のコンピューターだけにマウントしないことです。これまでは、端末を取り付けるたびに端末をトリガーしていました。
その後、chattr +c
を発見しました。これは非常にうまく機能していますしかし ZLIBの代わりにLZOを使用したいと思います。より具体的に圧縮アルゴリズムを一度だけ定義する方法はありますか?
btrfsは、以下を使用すると、マウントされてから変更されたすべてのファイルを圧縮します。
_mount -o compress-force=lzo /dev/btrfsdev /mnt/btrfsmnt
_
すべてのファイルがこのように圧縮されることを確認したい場合は、それを行うために作成した小さなスクリプトがあります...
_du -ht +$((1024*1024)) "$HOME" |\
sed -rn 's/^[^/]*(.*)/btrfs fi defrag -fvclzo "\1"/p' |\
Sudo sh -n
_
上記は私の_$HOME
_ディレクトリでのみ機能しますが、好きなように何にでも使用できます。また、_-n
_オペランドがsh
にそのまま供給されるため、自分で確認できます。 sh
は現在not
削除する前に何をしていますかそれをするように言うために。
とにかく、最初にdu
に_human-readable
_形式のファイルを照会します(とにかく次のステップでそれを取り除くので、おそらくここでは冗長です)_1MB
_または$((1024*1024)).
It_|pipes
_その情報をsed
に送信し、先頭の_/, "quotes"
_ファイル名、_btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename
_コマンドを作成し、_|pipe
_から_Sudo sh
_を実行します。
繰り返しになりますが、_sh --no-execute
_が有効である限り、何も実行されません。
一部のvery最近のbtrfs
ユーザースペースツールビルドは、ディレクトリ全体を再帰的に最適化すると思いますが、そうであれば、かなりきれいです新しいことなので、私はいつもこのようなことをしなければなりませんでした。
私が読んだことから、サブボリュームのルートにcompression
プロパティを設定して、この[0、1]を実現できます。
Sudo btrfs property set /mnt/your-subvolume compression lzo
Sudo btrfs filesystem show /mnt/your-subvolume
を使用してBtrfsサブボリュームUUIDを取得した後、LZO圧縮機能が現在有効になっていることを検証できます。
cat /sys/fs/btrfs/<UUID>/features/compress_lzo
有効になっている場合は1を返す必要があります。
[0] https://btrfs.wiki.kernel.org/index.php/Compression
[1] https://www.berthon.eu/2016/setting-shared-folder-compression-on-synology-nas-btrfs/