Ext4

如何在 debugfs 的 ext4 文件系統上刪除名為“filen/ame”(帶斜杠)的文件?

  • March 23, 2017

使用 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

如果您想要修復並且不只是嘗試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   

引用自:https://unix.stackexchange.com/questions/352601