特定のディレクトリでext4のカーネル5.2の大文字と小文字を区別しない新機能を有効にする方法は?

特定のディレクトリでext4のカーネル5.2の大文字と小文字を区別しない新機能を有効にする方法は?

+F私はカーネル5.2がinodeのビットを反転して、各ディレクトリのext4大文字と小文字の区別を処理するのを見ました。

このEXT4大文字と小文字を区別しないファイル名ルックアップ機能は、+ F inode属性を反転し、空のディレクトリがアクティブな場合はディレクトリごとに機能します。

https://www.phoronix.com/scan.php?page=news_item&px=EXT4-Case-Insensitive-Linux-5.2

しかし、どうすればいいですか?この問題を処理できるchmodはありますか?私のディストリビューションはこれではありません。

では、この機能をどのように使用しますか?

答え1

まず、十分に新しいソフトウェアが必要です。

インストール後のマニュアルは次のとおりです。man ext4この機能の存在を反映します。

折りたたむ

このext4機能は、ディレクトリのファイルシステムレベルの文字エンコーディングのサポートを提供します。折りたたみ(+F) ロゴ有効です。この機能はディスクの名前を保持しますが、アプリケーションがエンコードされた対応するファイル名のバージョンを使用してファイルシステム上のファイルを見つけることができます。

これ折りたたむこの機能は、まずファイルシステム全体のext4オプションで有効にする必要があります。残念ながら、すでにフォーマットされているファイルシステムではアクティブにすることはできません。したがって、生成されたスパースファイルを使用して、新しくdd if=/dev/zero of=/tmp/image.raw bs=1 count=1 seek=$((2**32-1))作成されたファイルシステムをテストします。

# tune2fs -O casefold /tmp/image.raw 
tune2fs 1.45.3 (14-Jul-2019)
Setting filesystem feature 'casefold' not supported.
#

修正する:から今回提出してくださいtune2fs有効にするために使用できます。折りたたむマウント解除されたファイルシステムから。この回答が書かれたとき、この機能はまだ利用できませんでした。

# tune2fs -O casefold /tmp/image.raw
tune2fs 1.47.0 (5-Feb-2023)
#

したがって、フォーマットすると次の機能が有効になります。

# mkfs.ext4 -O casefold /tmp/image.raw 

または、デフォルトのエンコーディングの代わりに別のエンコーディングを指定します(UTF8)。現在はそうです。ただutf8-12.1、中UTF8とにかくエイリアスです。

# mkfs.ext4 -E encoding=utf8-12.1 /tmp/image.raw 

tune2fs を使用して実行された操作を確認できます。

# tune2fs -l /tmp/image.raw |egrep 'features|encoding'
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg casefold sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Character encoding:       utf8-12.1

ここでこの機能を使用してください。

# mount -o loop /tmp/image.raw /mnt
# mkdir /mnt/caseinsensitivedir
# chattr +F /mnt/caseinsensitivedir
# touch /mnt/caseinsensitivedir/camelCaseFile
# ls /mnt/caseinsensitivedir/
camelCaseFile
# ls /mnt/caseinsensitivedir/camelcasefile
/mnt/caseinsensitivedir/camelcasefile
# mv /mnt/caseinsensitivedir/camelcasefile /mnt/caseinsensitivedir/Camelcasefile
mv: '/mnt/caseinsensitivedir/camelcasefile' and '/mnt/caseinsensitivedir/Camelcasefile' are the same file

関連情報