真的很奇怪FAT32文件列表问题

And*_*y E 5 ls filesystems mount

我在我的 NAS(它有一个 USB 端口)上安装了一个 FAT32 驱动器,当我ls在驱动器根目录上使用命令时遇到了一个奇怪的问题:

ls: cannot access ???²é?u.g: Input/output error
ls: cannot access ?f$?â?.k: Input/output errorPuTTY
ls: cannot access ?21ï??é.ìk?: Input/output error
ls: cannot access ºq`{??ùê.?zï: Input/output error
ls: cannot access +?l`æ~2?.]9: Input/output error
ls: cannot access ??j.é: Input/output error
ls: cannot access ëégö²?è.?« Input/output error
?.¢??: Input/output error
ls: cannot access ??d?¬«ëc.?½f: Input/output error
ls: cannot access ?r??%f.o??: Input/output error
ls: cannot access b}?çb¼=u.?c·: Input/output error
}??..÷p½: Input/output error
ls: cannot access u?;e?j?.
Run Code Online (Sandbox Code Playgroud)

我不确定为什么“PuTTy”被扔在第二行。它是我用来访问 NAS 的客户端,我运行的是最新版本,但我不明白它与ls命令有什么关系。它会像这样持续一段时间,然后开始列出实际上并不存在的文件以及以下文件:

�?=?^Oaa�.h?=
?*ab^G^S??.?^[?
a?cw??^?*.=?$
�??a�h��.?�?
??a�?^_j!.?i?
�?a?m??^U.a^G^?
apps
??^Q??a?y.�?z
Run Code Online (Sandbox Code Playgroud)

我正在运行 Debian/Lenny(现在),但在我的 NAS 上切换到 Debian 之前我遇到了同样的问题。我不确定我之前运行的是哪个发行版,我认为这是一个自定义版本。

当我插入驱动器时,sdcsdc1出现在/dev目录中。我无法挂载sdc,但可以成功挂载sdc1。这些是我尝试用于挂载的命令:

mount /dev/sdc1 /USB
mount -t vfat /dev/sdc1 /USB
mount -o umask=0 -t vfat /dev/sdc1 /USB

# Additional
mount -t vfat -o codepage=850 /dev/sdc1 /USB
mount -t msdos -o codepage=850 /dev/sdc1 /USB
mount -t vfat -o codepage=869 /dev/sdc1 /USB
mount -t vfat -o codepage=850,iocharset=iso8859-7 /dev/sdc1 /USB
# ... and combinations of codepage 850, 869, 437 (the common ones)
# ... and combinations of utf8, iso8859-7, iso8859-1
# ... and additional flags such as umask=0, rw
Run Code Online (Sandbox Code Playgroud)

如果我在ls命令后检查日志,结果如下:

$ dmesg | tail
FAT: Filesystem panic (dev sdc1)
    invalid access to FAT (entry 0x8c31db6e)
FAT: Filesystem panic (dev sdc1)
    invalid access to FAT (entry 0xee786bb9)
FAT: Filesystem panic (dev sdc1)
    invalid access to FAT (entry 0x2f16a272)
FAT: Filesystem panic (dev sdc1)
    invalid access to FAT (entry 0xa8ee938e)
FAT: Filesystem panic (dev sdc1)
    invalid access to FAT (entry 0x6df5a84f)
Run Code Online (Sandbox Code Playgroud)

老实说,我的 Linux 知识并不是那么好——主要限于基本的管理任务。当然,如果我将驱动器插入 Windows (7),它就可以正常工作。

也许值得一提的最后一点是,我记得必须使用特殊工具来格式化驱动器,因为它太大了,Windows 无法对其进行格式化。

编辑

仔细检查驱动器,所有文件似乎都存在 - 那么 linux 从哪里获取所有这些垃圾?Windows 上的根目录中只有几个文件和文件夹。会不会是数据没有被妥善处理?

编辑 2

在我的笔记本电脑上的 Ubuntu 中也有同样的问题。无论ls和文件浏览器中显示这些奇怪的文件列表。

Mat*_*Mat 1

这看起来像是代码页问题。在手册页中查找mount- 在fat各部分中,有一个codepage=您可以使用的设置。

还要看看iocharset=设置。(并在网上搜索两者。)