问题:如果 Windows 用户从驱动器复制所有文件,将其保存到其他地方,格式化驱动器并将文件粘贴回去,这会影响任何被复制的程序,即program files
文件夹吗?
例子:我在驱动器上安装了 X 软件E:
,复制并格式化驱动器,然后粘贴文件后,Windows 是否会无法识别安装或将软件 X 的存在标记为损坏?
我的情况:我打算将 ubuntu 安装到我的E:
驱动器上,但我想让它格式化驱动器,但又不弄乱我当前在该文件上安装的程序,所以我打算将我的文件复制到外部硬盘驱动器上,然后再粘贴回去。(不,我要安装的驱动器不是我安装 Windows 的驱动器)
答案1
它是否会影响任何被复制的程序,即程序文件夹?
我预计可能会出现一些麻烦,这取决于如何做到这一点。
一个老例子:
好吧,这个问题被标记为“Windows”,如果您使用 Windows 3.1,我希望不会有什么问题,只要系统仍然可以启动 DOS(简单的“SYS C:”)就可能解决。
时代变迁:
不过,我猜你指的是 Microsoft Windows 的较新版本。在这种情况下,根据你复制的具体方式,你肯定会遇到大问题。
我将使用术语“文件管理器”,因为这是 Windows 3.1 和 Windows 10 使用的术语。如果您使用在这些版本之间制作的其他版本的 Microsoft Windows,您可能会发现该软件被称为“Explorer”或“Windows Explorer”。为了避免每次都重复,我只使用一个术语,因此请根据需要进行调整以适合您所使用的 Windows。
温斯克斯:
如果您使用的是未运行的 Windows 副本(例如,您关闭 Windows 并从运行 Linux 并可以访问 NTFS 的 CD 启动),则问题可能会少一些。如果您在运行时从 Windows 执行此操作,并且只是使用“文件管理器”复制您在顶级文件夹中找到的所有文件夹图标,那么麻烦就来了。
首先想到的是 C:\Windows\WinSXS 文件夹。此文件夹包含“并排程序集”数据。操作系统将此文件夹视为特殊文件夹。为了使 DLL 处理工作对最终用户更轻松/更好,Windows 对此文件夹进行了一些特殊处理,以便能够存储和使用同一文件的多个版本。这往往在幕后透明地工作,并且效果很好。但是,如果您实际上尝试以另一种方式与文件夹交互,则可能会出现问题。
例如,目录统计(免费下载的程序)显示的信息可帮助人们轻松了解磁盘空间的使用情况。因此,WinDirStat 会执行一些标准操作,例如询问 Windows 文件夹中有哪些文件以及每个文件有多大。问题是 C:\Windows\WinSXS\ 文件夹旨在以特殊方式处理。由于 WinDirStat 不会将 C:\Windows\WinSXS 作为特殊文件夹处理,因此结果最终看起来令人困惑:C:\Windows\WinSXS 看起来占用了大量空间。
如果您尝试从该目录复制数据,我怀疑您可能会遇到 Microsoft Windows 组件的问题,例如用户帐户控制或系统文件保护。但是,即使您确实设法获得完成复制尝试的权限,您最终也可能会复制同一数据的多个版本。结果是您的目标与源不匹配。(目标会更大,而且很可能大得多。您可能会用尽目标设备上的空间。)
此外,即使复制似乎成功了,然后你将信息复制回新的驱动器,Microsoft Windows 还是期待C:\Windows\WinSXS 目录需要以特殊方式处理。因此,如果您在 Microsoft Windows 尝试使用该目录时将一堆正常数据转储到该目录中,则这些“正常”数据将不符合 Microsoft Windows 对 C:\Windows\WinSXS 目录的期望。
页面文件
页面文件用于存储 Microsoft Windows 应该跟踪但不在内存中的数据。
可能是这样的,如果页面文件被复制到目标位置,然后 Microsoft Windows 向原始页面文件写入更多数据(可能在您仍在复制驱动器上的其他数据时),则这些数据可能永远不会复制到目标页面文件。Microsoft Windows 内存管理很复杂,可以使用 RAM 和活动页面文件。复制驱动器时,目标副本不包含任何 RAM 内容。由于 Microsoft Windows 相当复杂,并且在后台执行一些操作,因此我很容易相信,如果 Windows 的新副本未能成功复制部分数据,则可能会丢失一些数据。
大拇指.db:
假设目录中有 3 个(或更多)文件:
- 一个.jpg
- jpg.jpg
- 大拇指.db
- y.jpg
- jpg.jpg
当您将 a.jpg 复制到空文件夹时,文件管理器会尝试以特殊方式处理已识别的图形。文件管理器会将图形重新调整为“缩略图”大小,并将结果存储在 thumbs.db 中。
然后,当文件管理器尝试复制预先存在的 thumbs.db 文件时,它将看到目标目录中已经存在一个 thumbs.db。文件管理器可能会提示您,询问是覆盖现有文件,还是使用预先存在的文件(它刚刚创建)。这可能很烦人,并且实际上会暂停复制数据的某些过程,阻止进一步的自动化进程,直到您与软件交互。
然后,在复制 thumbs.db(现在已包含目标文件夹中所有文件的缩略图,例如 a.jpg 和 b.jpg)后,其余图形文件(例如 y.jpg 和 z.jpg)将创建缩略图,每次都会修改 thumbs.db。理论上,Microsoft Windows 可能会以完全相同的方式创建缩略图(如果图形未修改,并且 Microsoft Windows 的相关部分自旧 thumbs.db 文件以来未修改),但即使您拥有相同的字节,您的文件创建时间也会被修改。因此,您的副本不会是完全相同的副本。
文件顺序
当您写入文件时,较旧的操作系统只会将最新文件转储到列表末尾。这导致文件以所谓的“未排序”顺序存储。当 Windows 通常处理 FAT 驱动器时,这种情况很常见。
现在,我读到 NTFS 试图通过将文件存储在“B 树”中来自动对文件进行排序,从而变得智能。从长远来看,这可以提供一些速度优势,但进行完美排序需要更多的前期时间,因此 NTFS 基本上会进行尝试,但会接受排序中的不完美。
文件管理器可能会决定以不同的格式复制文件,例如按字母顺序复制。
总结/回顾 这些可能不是您的目标与源之间唯一的差异,但这些是我碰巧知道的一些差异。虽然 thumbs.db 文件的创建时间可能无关紧要,文件顺序可能也不重要(因为众所周知许多人在使用 Defrag 时会调整文件顺序),但我不敢说这些事情对每个人都无关紧要。人们使用 Microsoft Windows 的方式非常可定制,因此对一个人来说完全可以忽略的事情可能会让另一个人感到非常恼火或造成损害。
WinSXS 问题特别容易导致问题,因此简单的答案是:不,简单的数据复制不一定会产生与原始数据一样好用的完美副本。
我的情况:我打算将 ubuntu 安装到我的 E:drive,但我想让它格式化该驱动器,但又不弄乱我当前在该文件上的程序的安装,所以我打算将我的文件复制到外部硬盘上然后将其粘贴回去。
我抱怨的很多问题尤其可能出现在您复制安装 Windows 的驱动器和/或页面文件时。如果 E: 不符合这些描述,您可能不太可能遇到问题。但是,由于存在“复制保护”的可能性,在某些情况下,软件可能会注意到 E: 中的差异。
这在一定程度上取决于 E: 上的内容。如果您只有 zip 文件,那么简单的文件复制可能就可以正常工作。您提到了“Program Files”。嗯,许多程序都不会出现任何问题。但是,我并不是说所有程序都不会出现问题。不同的程序具有不同的复杂程度。例如,某些程序可能在 WinSXS 中存储了 DLL 文件片段,而其他程序则没有。因此,结果可能非常不同。
使用图像:
这是一个更安全、更可能奏效的解决方案。使用映像软件。(使用创建“位精确”映像的软件,有时称为“取证映像”。制作整个驱动器的映像,包括存储文件系统结构数据的“元数据”,如与文件相关的时间戳。)创建 E: 的映像,最好是在驱动器卸载时。然后,稍后恢复映像。
Ubuntu 的“dd”可以做到这一点,Microsoft Windows 的一些可下载程序也可以做到这一点。我希望“Clonezilla”也能做到这一点。
在非活动驱动器上使用映像软件比尝试使用 Windows 仅复制文件更有可能起作用。
答案2
假设你使用如下程序Robocopy正确复制全部文件内容(包括安全 ACL)的权限,则不会出现问题。我能想到的一个例外是,如果其中一个文件有备用数据流,但这种情况极不可能发生。
如果你这样做了,但失败了,你就陷入困境了,所以我建议使用像 CloneZilla 这样的程序来创建一个图像驱动器。如果您感兴趣,您仍然可以使用复制方法,但图像保证可以捕获所有内容,如果复制方法失败,它将挽救局面。