环境:Windows 11 Pro 64 位下的 MS Office LTSC Pro Plus 2021。
这是我在StackOverflow上的问题的后续:在 MS Outlook VBA 中,如何在 MailItem 中查找隐藏数据。
我一直在研究我的 Outlook 文件的内容pst
。它包含自 2004 年以来发送和接收的电子邮件,共 19 年。
我只用 outlook 收发电子邮件。我不使用它的日历或其他功能,尽管有时当有人要求开会并且我回应时它会将事件存储在日历中。我假设 pst 文件的内容不能直接归因于其中包含的电子邮件,可以忽略不计。
6 月 1 日,我将 pst 文件的电子邮件文件夹中的所有项目的属性输出到 MS Access。这是 300,723 个项目。MailItem.Size
所有项目的属性总和为 9.5 * 10^9。不幸的是,我当时没有保存 pst 文件的副本,但我在 5 月 27 日的备份文件大小为 15.7 * 10^9,6 月 9 日观察到的文件大小为 15.8 * 10^9。所以我估计6月1日pst文件的大小是15.7 * 10^9。这意味着文件的大小比MailItem.Size
所有项目的总和大 6.2 * 10^9 或 65%。
在上面链接的StackOverflow问题中,在隐藏数据部分,我注意到了三个奇怪的观察结果。首先是 Outlook 似乎在保存我删除的电子邮件附件的隐藏副本。第三个是 Outlook 似乎正在保存我永久删除的电子邮件的隐藏副本(即,不只是移动到“已删除邮件”文件夹)。
pst 文件的大小比MailItem.Size
其文件夹中所有电子邮件的总和大 65% 的新观察结果似乎与之前的观察结果一致,即删除的附件和删除的电子邮件似乎隐藏在文件。但在假设这是正确的之前,我需要知道 Outlook 中电子邮件的存储开销是多少。换句话说:
MailItem.Size
如果存储在 pst 文件中的所有电子邮件总数为x,没有删除附件,也没有从“已删除邮件”文件夹中删除电子邮件,并且文件的大小为y,则比率的预期大小是多少是/是?
假设该问题的答案远小于 1.65,我剩下StackOverflow问题中提出的问题:如何在文件的数据结构中找到那些已删除的附件和已删除的电子邮件的隐藏位置,以及如何我可以从文件中删除它们吗?
PST 文件有自己的存储系统,与 FAT32 或 NTFS 没有太大区别。当邮件或附件被删除时,您可能会有空扇区 - 如果您删除 10kB 的电子邮件,Outlook 不会重写多 GB 的 PST 文件。数据不会立即返回到主机操作系统 (Windows) - 已删除电子邮件使用的扇区将被标记为空,稍后将被重新使用。预计存储会变得碎片化。
如果要回收存储空间,可以压缩 PST - 右键单击顶部 PST 文件夹,选择“数据文件属性”、“高级”、“立即压缩”。
我接受了德米特里的回答。我的这个答案将描述实施他的答案的结果。我问了一个后续问题,我希望他能在评论中回答。
以下是我所做的和发生的事情的概要:
Calendar
和Contacts
,以及115个电子邮件文件夹,包含301,062封电子邮件。MailItem.Size
电子邮件总数为 9.5 * 10^9 字节。因此,文件大小超过电子邮件总大小 6.3 * 10^9 字节,即 66%。CreationTime
问题( 2023 年 5 月 3 日而ReceivedTime
不是该日期的8,000 封电子邮件)背后的问题。Conversation Action Settings
和Quick Step Settings
.Calendar
、Contacts
、Notes
和Tasks
3,781 kb,这意味着电子邮件文件夹总计 9,283,419 kb。我的子例程报告的 s总数MailItem.Size
除以 1,024,得出 9,283,419.4 kb,因此在这一点上,Outlook 的文件夹列表与我的子例程的输出完全一致。概括:
MailItem.Size
:9.5 * 10^9 字节。结论:
第二个结论中的21 % 数字似乎是对我关于 Outlook 存储开销的问题的回答。但它似乎非常高。我对 Dmitry 和/或其他 Outlook 专家的后续问题是:
请记住,PST 文件还存储允许更快搜索的各种索引、文件系统本身(描述哪个扇区存储特定消息的部分)等。