如何删除 NTFS 分区上损坏的文件?

如何删除 NTFS 分区上损坏的文件?

我有一个 NTFS 分区(/dev/sda3)通过安装NTFS-3G在 Arch Linux 上。该分区包含一个cee431d2730eb5e1697bd57b3bb529我想删除的文件。

ls -la返回以下输出

ls: cannot access 'data/cee431d2730eb5e1697bd57b3bb529': Input/output error
total 16611578
#Some other files...
d?????????  ? ?       ?              ?            ? cee431d2730eb5e1697bd57b3bb529

同样file cee431d2730eb5e1697bd57b3bb529返回cee431d2730eb5e1697bd57b3bb529: cannot open 'cee431d2730eb5e1697bd57b3bb529' (Input/output error)

ls -i也返回? cee431d2730eb5e1697bd57b3bb529(找不到 inode)

我尝试删除它,rm -f但也因输入/输出错误而失败(无论是作为 root 用户还是普通用户)。

跑步ntfsfix /dev/sda3也没有解决问题。

答案1

据我所知,目前Linux上还没有修复ntfs分区的工具。ntfsfix这只是一个技巧,它只是将分区设置为“干净”,但实际上并没有清理它。

写入损坏的文件系统会危及其上的数据,并且我们通常不信任ntfs,因此我们试图避免进一步的数据损坏,这就是为什么该工具宁愿选择拒绝删除。

您需要使用不同的操作系统来修复分区。理想情况下,为了避免重新启动 Linux,如果您使用某种虚拟化技术来直接访问分区,这会很有用。

答案2

我希望这对一些人有帮助。

我有一个连接到 Linux 服务器的带有 NTFS 分区的外部硬盘驱动器,其中有一个我无法访问的文件夹。

例如,如果我尝试cd进入该文件夹,我会得到Input/output error.

我实际上使用 Windows 10 来解决这个问题,而且非常简单:

  1. 我刚刚将该驱动器插入 Windows 10 计算机。
  2. 自动安装后,它立即注意到存在一些问题,并提供了“扫描并修复”选项。所以,我只是选择了这个选项。
  3. 大约15分钟后(为此4TB驱动),成功完成。

值得庆幸的是,之后当我将其重新插入 Linux 服务器时,该驱动器工作正常。

答案3

5年零1个月前提问

日期为 2021 年 10 月 13 日 https://www.theregister.com/2021/10/13/how_ntfs_finally_made_it/

  • NTFS是微软专有的文件系统
  • NTFS-3g 是一个开源、免费的 Linux 驱动程序,允许 Linux 访问 NTFS 文件系统
  • 来自文章:从Linux 5.15内核开始,NTFS终于在Linux中得到全面支持。这段旅程并不轻松。 仅仅因为某些东西是专有的并不意味着 Linux 和开源开发人员不能对它进行逆向工程或欺骗某种使用它的方式......然而事实证明 NTFS 的移植要困难得多(与 SAMBA 相比)

除非 Microsoft 和/或 Linux 社区最近发表了一些官方声明,否则您仍然必须假设 Linux 中 NTFS 的任何奇怪之处都是由于 NTFS 的专有性导致 Linux 人员无法理解的,并且您需要使用相应的 Microsoft Windows 操作系统才能真正正确修复它。这意味着将文件系统安装到 Microsoft Windows 中并使用其扫描和修复...如果您重视 ntfs 文件系统上的数据并希望其可靠/可靠。

如果没有 Microsoft Windows 10 或 11 操作系统并且/或者无法获取和设置该系统以备扫描和修复 NTFS(或者至少了解您所承担的风险),则不应在 Linux 中使用 NTFS 文件系统。

相关内容