debugfsのext4ファイルシステムから"filen / ame"(スラッシュを含む)というファイルをどのように削除しますか?

debugfsのext4ファイルシステムから"filen / ame"(スラッシュを含む)というファイルをどのように削除しますか?

e2fsprogsを使用すると、debugfs変更/事故のためというfilen/ameファイルが生成されました。明らかに、スラッシュ文字は/パス名の特殊な区切り文字として機能します。

使い続けていますdebugfs。名前付きファイルを削除したいが、文字がファイル名の一部として解釈されないfilen/ameため、ほとんど成功しません。/

debugfsはスラッシュを含むファイルを削除する方法を提供しますか?それではどうでしょうか?

私は以下を使用しました:

cd /tmp
echo "content" > contentfile
dd if=/dev/zero of=/tmp/ext4fs bs=1M count=50
mkfs.ext4 /tmp/ext4fs
debugfs -w -R "write /tmp/contentfile filen/ame" /tmp/ext4fs
debugfs -w -R "ls" /tmp/ext4fs

出力:

debugfs 1.43.4 (31-Jan-2017)
 2  (12) .    2  (12) ..    11  (20) lost+found    12  (980) filen/ame

ファイルを削除しようとしましたfilen/ame

debugfs -w -R "rm filen/ame" /tmp/ext4fs

しかし、これはうまくいかず、次のように生成されました。

debugfs 1.43.4 (31-Jan-2017)
rm: File not found by ext2_lookup while trying to resolve filename

ディレクトリノードの内容を手動で変更するだけでなく、ファイル削除を使用する方法はありますかdebugfs

答え1

問題を解決したいが試していない場合は、次のことがdebugfsできます。FSCKあなたのために働いています。ファイルシステムをダーティとして表示し、実行してfsck -yファイル名を変更します。

$ debugfs -w -R "dirty" /tmp/ext4fs
$ fsck -y /tmp/ext4fs
 ...
/tmp/ext4fs was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Entry 'filen/ame' in / (2) has illegal characters in its name.
Fix? yes
 ...
$ debugfs -w -R "ls" /tmp/ext4fs
2  (12) .    2  (12) ..    11  (20) lost+found    12  (980) filen.ame   

答え2

fsckジョブを祝います。何らかの理由で動作しない場合、答えは次のls -i1ようになります。umountclri

引用:http://docstore.mik.ua/orelly/unix/upt/ch23_13.htm

実際にこの方法をテストしてみました。

答え3

ファイルをディレクトリに移動すると、ファイルを含むディレクトリを削除できます。

mkdir foo 
mv filen* foo
rm -rf foo

関連情報