2

我无法删除作为备份的备份副本的文件...我不记得它经过的所有文件系统字符集。

无论如何,今天这是文件:

nas# ls -al
ls: cannot access Sécurité: No such file or directory
total 32
drwx------ 4 sambacam sambacam 20480 Jun  5 01:38 .
drwxr-xr-x 3 sambacam sambacam 12288 Jun  5 01:38 ..
d????????? ? ?        ?            ?            ? S??curit??
nas# cd S*
cd: 13: can't cd to Sécurité
nas# rm "Sécurité"
rm: cannot remove `S\303\251curit\303\251': No such file or directory
nas# rm S*
rm: cannot remove `S\303\251curit\303\251': No such file or directory
nas# 

我什至尝试用 Python 编写代码但没有成功:

nas# python
Python 2.5.2 (r252:60911, Jan 24 2010, 20:48:41) 
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> d=os.listdir('.')
>>> d
['S\xc3\xa9curit\xc3\xa9']
>>> d[0]
'S\xc3\xa9curit\xc3\xa9'
>>> os.remove(d[0])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 2] No such file or directory: 'S\xc3\xa9curit\xc3\xa9'
>>> 

任何想法?

我已经运行 fsck 来检查不一致之处。

4

2 回答 2

5

我认为你有更严重的问题:

d????????? ? ?        ?            ?            ? S??curit??

这意味着ls(1)无法找到文件的权限链接计数所有者大小mtime。它只有一个文件名。

如果目录结构指向一个文件,但该文件的 inode 已丢失,则可能会发生这种情况。我希望 afsck能找到它并清理目录条目,但如果没有发生这种情况,您可能永远无法清空此文件系统上的此目录。(你可以将它移动到任何你想要的地方,甚至可以移动到/lost+found,并且不会再被它打扰......)

也许该debugfs(8)工具对学习更多有用?

于 2011-06-05T09:12:36.843 回答
3

您是否尝试过使用 inode 编号技巧?做:

ls -ilb

该列表中的第一个数字是 inode 编号。该-b开关ls不会尝试打印不可打印的字符。从文件中获得 inode 编号后,请尝试:

find . -inum the_number_from_above -exec rm -i {} \;

(顺便说一句:那是 UTF-8 编码。)

我不确定它是否会起作用。ls没有找到文件的元数据(时间戳和权限位)的事实看起来像文件系统损坏。

于 2011-06-05T09:11:29.027 回答