使用 Linux 将文件从 NTFS 精确复制到另一个 NTFS

使用 Linux 将文件从 NTFS 精确复制到另一个 NTFS

我尝试将所有文​​件从 NTFS 复制到外部驱动器,并希望保留所有权限和属性。外部驱动器已经是 NTFS 并包含其他文件。

我考虑过使用以下工具:

  • ntfsclone不起作用,因为它在扇区级别操作,会克隆整个 FS,从而破坏旧数据。如果用于创建映像文件,我无法从 Windows 计算机访问内容。
  • rsync不保留所有元数据。

另一种方法是在正在运行的 Windows 中使用robocopy,但我更愿意不使用。(源分区用作系统的C:\。)

我怎样才能复制文件?

答案1

没有办法通过 Linux 精确复制 NTFS 文件。即使葡萄酒,Linux 上的 Windows 兼容层,通过在 Linux 和 Windows 之间来回转换权限来工作,因此仅限于它们(相当小的)最小公分母。

我能看到的唯一解决方案是在虚拟机(或物理机)中的 Linux 上运行 Windows。

我相信您在帖子中提到过这种可能性,并且希望避免这种情况,但我没有看到其他可能性。只有 Windows 才能准确复制 NTFS 文件;Linux 只能复制 NTFS 分区。

这篇文章可能会有所帮助: 如何在 Linux 上免费安装和运行 Microsoft Windows,使用免费虚拟机由微软下载

答案2

首先,您需要决定是否要复制文件......

或者您想要对 NTFS 分区进行逐扇区的完整复制,包括“旧数据”、“其他文件”以及您上面非常广泛提到的“所有元数据”。

对于后者,使用 dd:

dd if=/dev/sda2 of=/mnt/usbdisk/my-ntfs-partition-D.img bs=1M

玩得开心。

答案3

Linux 可以复制 NTFS 文件内容很好,只是不是所有的修改/创建/访问的日期和属性(我假设这是你想要保留的)。

那么,为什么不直接记下当前日期和属性(dir应该能够显示它们),然后复制 Linux 中的文件,一旦您再次运行 Windows,就将日期和属性改回原始状态呢?

使用 Windows 中可以更改文件的工具,例如这些

显然Windows 自己的文件资源管理器甚至不能正确保存所有文件的日期都一样。但 zip &cygwin 的 tar 命令应该保存文件日期,因此首先使用 Windows 中的其中一个创建存档也应该可行,然后以任何旧方式复制存档。


如果属性非常重要,并且即使在 Windows 中也很难复制,则可能应该将它们备份在文本文件或数据库中,或将其作为文件名的一部分……

答案4

更新 2023.08.08:cp 和 rsync 仍然无法开箱即用。但 tar 仍然可以,而且 tar 可以通过管道传输。这将保留时间戳。(也许 ctime 除外。)

如何即时对输出进行 tar/untar

相关内容