Tri*_*ech 5 linux files corruption
昨晚我有一个 Dovecot 服务器锁定,它损坏了用户邮件目录中的一个文件。文件名现在包含特殊字符并且无法删除,所有命令行工具都说找不到该文件,即使它是通过 LS 命令显示的。
1386141318.M854059P?3?62.email.vantagetitle.com,S?11304,W11473:2,Sc
Run Code Online (Sandbox Code Playgroud)
您可以看到名称中的特殊字符,例如“?” 或者 ”?”。
我似乎找不到任何方法来删除此文件。
我应该做fsck吗?
编辑 1:
我最终创建了一个新的“cur”目录并将所有好的电子邮件移到它上面。我将旧的“cur”目录重命名为“bad cur”
我尝试了以下...
sh-3.2# rm -rf badcur
rm: badcur: Directory not empty
sh-3.2# cd badcur
sh-3.2# ls
1386141318.M854059P?3?62.email.vantagetitle.com,S?11304,W?11473:2,Sbc
sh-3.2# rm -rf 1386141318.M854059P?3?62.email.vantagetitle.com,S?11304,W?11473:2,Sbc
sh-3.2# ls
1386141318.M854059P?3?62.email.vantagetitle.com,S?11304,W?11473:2,Sbc
sh-3.2# ls -i
ls: 1386141318.M854059P?3?62.email.vantagetitle.com,S?11304,W11473:2,Sbc: No such file or directory
sh-3.2#
Run Code Online (Sandbox Code Playgroud)
您可以尝试使用-iwhich 会给您一个问题
rm -i 1386141318.M854059P*
rm: remove regular file '1386141318.M854059P?3?62.email.vantagetitle.com,S?11304,W11473:2,Sc'?
Run Code Online (Sandbox Code Playgroud)
并回答 y
您可以使用它的 inode 号删除该文件。用于ls -li获取文件的 inode 编号。拥有后,使用 find 将其删除
find . -inum <inode number> -delete
Run Code Online (Sandbox Code Playgroud)