一台 Windows 10 计算机已打开文件历史记录备份。它占用了近 400GB 的空间,因此我将其更改为删除超过 3 个月的保存点。文件历史记录中究竟包含什么?例如,如果您下载了一部 2GB 的电影,它会被保存吗?如果预期文件将被修改,这样的系统如何跟踪文件?
例如,如果有一个 1MB 的文件a.exe
,用户删除它,然后重新使用该名称,但生成一个 10MB 的文件,这会被视为新版本吗?
答案1
文件历史记录是一个非常基本的实用程序。文件历史记录仅备份文档、音乐、图片、视频和桌面文件夹中的文件副本以及您电脑上可离线使用的 OneDrive 文件。只要您提到的 2GB 电影保存在其中一个文件夹中,它就会被备份。
文件历史记录 会将这些文件夹中的文件副本保存到其他位置,该位置在其设置中配置。它会按照其设置中设置的频率执行此操作。一旦 Windows 检测到文件已更改,它就会复制该文件。Windows 会在您选择的驱动器上创建一个文件夹并创建文件的副本。它会使用文件名中的日期重命名它们,并创建一个小型数据库。
这些文件的恢复取决于所选的频率。如果您将其设置为每小时保存一次副本,而您每秒更改一次文件,则您一天只能对该文件进行 24 次备份。
回答你的最后一个问题,答案是肯定的,只要文件在更改之前备份过即可。同样,这完全取决于备份的频率。它不会跟踪文件更改的每个版本,因为这会占用大量存储空间。
文件历史记录实际上是为非技术用户设计的。这些用户不会备份他们的数据。微软一直在其操作系统中提供备份实用程序,但发现非技术人员并不使用它。整个差异、增量等措辞吓跑了非技术人员。文件历史记录使外行人备份文件变得容易得多。这是一种简单的设置后就忘掉的文件备份方式。但是,它远不如真正的备份程序那么强大。
答案2
您是否研究过卷影复制的工作原理?W10 文件历史记录就是基于此。但有一个很大的区别:与旧版 Windows 中的系统还原/VSC 文件恢复不同,文件历史记录将大多数备份保存在单独的硬盘上。
需要注意的重要事项:
不要指望文件历史记录能覆盖您的所有文件夹或整个驱动器 - 它会备份您的所有默认和自定义库(包括公共文件夹),以及联系人、桌面和收藏夹文件夹。但您可以通过 Modern UI/Metro 用户界面手动将文件夹添加到文件历史记录。
文件历史记录不会备份任何使用 EFS 的文件或文件夹
除非您的 OneDrive(又名 SkyDrive)文件夹中的项目可离线使用,否则它不会备份它们。
文件历史记录不需要管理员权限来设置,或者备份和恢复文件。
现在回答你的问题:
是的,大文件也会被保存。系统设计为使用外部存储。缓存也存储在
C:\Users\(username)\AppData\Local\Microsoft\Windows\FileHistory\Data.
在文件历史记录中,有文件的完整副本,与存储文件更改的 VSC 不同。它实际上的工作原理是这样的:它利用 USN 日志来跟踪更改并将文件修订保存在备份位置。保存修订版本并附加日期/时间。示例:
File1 (2016_10_01 01_11_11).tmp, File1 (2016_10_02 02_12_21).tmp.
- 目前还不清楚,但是文件内容可能没有什么区别。在最初的技术测试中,系统能够通过类似于 DLL 版本控制的标准来区分文件。这意味着完全不同的 a.exe 不会被视为前一个版本的新版本。我还没有看到后续版本中实现此功能,所以它可能已被删除。
基本上,FH 只是一个使用简单文件复制粘贴的定期有限备份工具。
答案3
我认为这篇文章的标题包括“备份的结构是什么?它存储在哪里?”所以我做了一些探索。
当您选择一个驱动器进行备份时,文件内容将存储在一个文件夹中\FileHistory\userName\computerName
,其中userName
是设置文件历史记录的用户的名称,computerName
是文件正在备份的计算机的名称。
在该文件夹下,有一个Configuration
文件夹包含两个 xml 文件和一个 EBD 文件(数据库),但内容似乎不多,还有一个Data
文件夹包含实际文件的副本。
文件夹下的Data
第一级是原始系统的驱动器名称(例如,文件夹 D 用于存放从驱动器 D: 备份的文件)。在这些第一级文件夹中,文件的结构与原始驱动器上的完全相同,但有两点不同:
- 每个文件的名称都有一个日期(可能是备份开始的时间),编码为“
{yyyy_mm_dd hh_mm_ss UTC}
”(注意前导空格)插入在文件扩展名之前。 - 在添加编码日期和在完整原始文件路径前加上 \FileHistory\Data 前缀之间,某些文件名可能会变得太长。这些文件被赋予编号名称,并放置在(显然)单级编号文件夹中,该文件夹位于
$OF
Data 正下方的文件夹中(因此与驱动器名称同级)。
备份文件的修改日期与原始文件相同。创建日期表示该特定备份文件的创建时间。备份文件已设置 R(只读)属性。
我的实验是使用 USB 拇指驱动器上的 FAT/FAT32 文件系统完成的,所以我不知道备份文件上会设置什么样的权限。
举一个更具体的例子,我的系统上有 Microsoft 参考源,其中一些文件已备份到:
F:\FileHistory\kpmartin\TETRON\Data\D\Users\KPMartin\Documents\Reference Source\dotnet462RTM\Source\ndp\fx\src\winforms\Managed\System\WinForms\Printing\PrintDialog {2020_02_02 06_33_12 UTC}.cs
,这是D:\Users\KPMartin\Documents\Reference Source\dotnet462RTM\Source\ndp\fx\src\winforms\Managed\System\WinForms\Printing\PrintDialog.cs
F:\FileHistory\kpmartin\TETRON\Data\$OF\7315\7318 {2020_02_02 06_33_12 UTC}.cs
这是备份D:\Users\KPMartin\Documents\Reference Source\dotnet462RTM\Source\ndp\fx\src\winforms\Managed\System\WinForms\Printing\PrintControllerWithStatusDialog.cs
编号名称的映射似乎并未与文件本身一起存储在备份驱动器上的 FileHistory 文件夹中。相反,它存储在原始系统的用户文件夹中,AppData\Local\Microsoft\Windows\FileHistory\Configuration
位于名为 的数据库文件中Catalog1.edb
。除此之外,还有一个名为 的 XML 文件,Config1.xml
该文件似乎包含实际的备份选项,包括文件夹包含和排除列表,以及目标驱动器信息。除了 和 之外Catalog1.edb
,Config1.edb
还有Catalog2.edb
和Config2.edb
,它们似乎是编号为 1 的对应项的精确副本。
EDB 文件是一种称为“ESE 数据库”的格式,在 Windows 中需要非关系数据库的地方随处可见。除了 FileHistory 之外,还有一些示例,例如 Active Directory 和 Windows 桌面搜索使用的索引。有关此文件格式及其使用位置的详细信息如下可在线获取。可以使用可能存在于更高级的 Windows 系统(我有 Windows 10 Enterprise)上的命令来探测此文件的元数据。esentutl.exe
链接的文章提到了另外两个命令,它们也可能进行一些探测。从数据库中转储实际的表内容可能需要编写代码,但本机和托管(.NET)支持。