从 Linux 解压 NTFS 卷上的文件

从 Linux 解压 NTFS 卷上的文件

我最近在双启动笔记本电脑上做了一件蠢事,我压缩了整个卷以便为 Linux 分区腾出空间。出于某种原因,Windows 允许我压缩C:\ntldr。现在我需要解压它以便 Windows 启动。

以下是我的一些操作限制:

  • 我无法访问 BIOS。
  • 我无法从 CD/USB/软盘启动。(我通过 PXE 安装了 Linux)
  • 它没有网络访问权限。

是否有某种方法可以指定 ntfs-3g 驱动程序在安装卷时不应压缩文件,即使它认为应该压缩文件(如果目录被压缩)?

或者,有没有办法使用 ntfsprogs 修改目录的属性?

答案1

好的,我想我已经解决了。问题出在 ntfs-3g 驱动程序上;它太努力地预测用户想要什么。

我通过使用 ntfs-3g 驱动程序安装卷/mnt/windows,然后将 ntldr 文件从卷中复制出来解决了该问题。

# mount -t ntfs-3g /dev/sda1 /mnt/windows
# cp -p /mnt/windows/ntldr ~/ntldr
# mv /mnt/windows/ntldr{,.bak}
# umount /mnt/windows

然后,我使用 ntfsprogsntfscp将文件重新复制回文件系统:

# ntfscp -f /dev/sda1 ~/ntldr ntldr

然后,当我ntfsinfo对它执行此操作时,它不再具有压缩属性。

答案2

您无法从外部驱动器启动,因此无法修复 USB/CD...无法访问网络...嗯...我不知道有什么可以从 Linux 彻底修复它。除了读写之外,NTFS 对任何其他功能的支持(相对而言,直到最近,写入支持也不太可靠)很少,因为 Linux 社区的态度是 NTFS 适用于原生 Windows。

我本来建议使用 VMWare 或 VirtualBox 在 VM 中启动 Windows 并授予其对分区的访问权限;这可以解决问题,但您说您没有网络访问权限来安装 VM 管理程序。

如果您确实需要数据,我唯一能建议的就是物理移除驱动器并将其放入适配器中,以使其作为外部 USB 驱动器在运行 Windows 的计算机上工作,然后对其进行解压缩/从那里运行修复。否则,从备份中恢复...

答案3

问题在于 ntfs-3g 驱动程序;它过于努力地预测用户想要什么。

据我所知,ntfs-3g 按照用户的要求执行了。它压缩了文件,因为用户将目录设置为压缩。

问题实际上在于 ntfcp 不遵循 NTFS 规范。

答案4

(我通过 PXE 安装了 Linux)

它没有网络访问权限。

我很困惑,但是没关系......

在任何机器上安装 Linux 的关键是

  1. 大多数机器都有某种形式的启动选择
  2. 启动过程与操作系统无关(因此您可以启动 Windows 以外的其他系统)

鉴于您似乎无法使用所有的“正常”启动向量,我想说,此时拉出驱动器并将其连接到另一台机器。


根据评论进行跟进:

让我们回顾一下:

  1. 外部启动已过时。这扼杀了使用 USB 记忆棒、CD 修复、实时启动 CD 等的任何机会。
  2. 可以移除硬盘,但非常不可取
  3. 在某些情况下可以进行 PXE 启动

因此看起来 PXE(您用来启动和运行双启动的相同方法)将是您最容易的选择。您能找出您使用的 PXE 服务器的地址吗?如果可以,您可能能够安排一些黑客攻击……您需要一台可以充当 PXE 服务器的计算机和一个未连接到任何其他网络的有线集线器。

  1. 设置 PXE 服务器环境
  2. 将 PXE 服务器配置为具有与 BIOS 预期相同的地址
  3. 通过 PXE 启动笔记本电脑
  4. 为笔记本电脑提供您选择的环境

我不确定您是否可以以这种方式实时启动 Windows CD(我只进行过旧式 DHCP/BOOTP/TFTP 启动,而不是 PXE),但如果可以,您可能能够访问修复控制台,这将是您最好的选择。您的第二个选择是将 Linux 实时启动 CD 放入笔记本电脑,然后尝试从那里修复它,尽管我怀疑您的成功率有限。作为最后的努力,您始终可以将数据迁移到另一台设备上(现在笔记本电脑又可以正常工作了)。

相关内容