USBHDDを持っています。
圧縮を有効にしてマウントしたい。システムのfstabで、またはudevルールを使用して実行できます。問題は、USB HDDをコンピュータだけにマウントしないことです。これまでは、マウントするたびにターミナルをトリガーしていました。
その後、。これは非常にうまく機能していますしかし、 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
削除する前に実行して、実行するように指示します。
とにかく、最初にクエリを実行します iv id = human-readable
形式のファイルの場合は “d583611ea3″>
(次のステップで削除するため、ここではおそらく冗長です)とにかく)が 1MB
または $((1024*1024)).
<よりも大きい/ p>
その情報を sed
に |pipes
ファイル名の先頭の /, "quotes"
の前にあるすべてのものをオフにし、 btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename
コマンドを作成して |pipe
を sudo sh
に渡して実行します。
繰り返しになりますが、 sh --no-execute
が有効である限り、何も実行されません。
いくつかの非常に最近の 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/
compress=lzo
で十分です。' PNGのような圧縮されたバイナリファイルを再圧縮する必要はありません。