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
ようになります。umount
clri
引用:http://docstore.mik.ua/orelly/unix/upt/ch23_13.htm
実際にこの方法をテストしてみました。
答え3
ファイルをディレクトリに移動すると、ファイルを含むディレクトリを削除できます。
mkdir foo
mv filen* foo
rm -rf foo