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