Answers:
我的猜测是否定的,但这不是一个明确的答案。
我首先创建了一个很大的(.160 MB).txt文件,并在TextEdit中对该文件进行了更改。如预期的那样,该文件及其版本显示在中/.DocumentRevisions-V100/PerUID
。该文件似乎是〜160 MB到ls
,但du -h
据称它们在磁盘上使用了0B。每个文件的硬链接计数为1。下一个名为.cs
(大块存储)的文件夹/.DocumentRevisions-V100
增加了大约110 MB。
每次更改文件时,以下情况都会发生/.DocumentRevisions-V100
:
/.DocumentRevisions-V100/staging/
。该文件的硬链接数为1。/.DocumentRevisions-V100/PerUID/<UID>/<#>/com.apple.documentVersions
。硬链接数保持为1。/.DocumentRevisions-V100/.cs
增加了约2 MB。驱动器(df
)的可用空间与du
告诉我的一致。可用空间将大大减少,然后恢复到几乎保存新版本之前的水平。
接下来,我尝试使用“安全清空垃圾箱”粉碎文件。OS X似乎使用了一个称为Locum
安全删除文件的程序。附加fs_usage
到会Locum
显示对原始.txt文件的大量读写操作。在Locum
执行此操作时,/.DocumentRevisions-V100/PerUID
仍可以完整访问数据下的所有版本。之后Locum
是写完过来的数据,它解除链接原来的txt文件,并在版本中/.DocumentRevisions-V100/PerUID
突然消失。Locum
然后移至垃圾箱中的其他任何位置,同时不要触碰/.DocumentRevisions-V100
。
里面的任何东西都/.DocumentRevisions-V100
不会被安全擦除。
编辑:我要补充一点,无论是在/.DocumentRevisions-V100
以某种方式混淆或压缩(该文件夹只是〜120 MB)。我尚未阅读Siracusa的评论的版本或文件系统部分……也许那里有线索。
我刚刚测试了一下,看来旧文件确实确实被删除了。我选择“安全清空垃圾箱”还是直接清空垃圾箱都没关系,它们也被删除了。
更多细节:
为了测试这一点,我启用了root用户,使我可以查看/.DocumentRevisions-V100
其中的文件。该文件夹的确切结构及其内容在John Siracusa的《 Lion评论》(内部,文档修订版)中有更好的解释。
我创建了几个文件,然后进行了一些更改,保存了新版本。当我保存新版本时,包含修订的文件夹将填充新文件。在此顶级文件夹中,有一个名为的文件夹PerUID
,其中包含每个用户帐户的子文件夹。每个用户帐户文件夹都包含一系列带编号的文件夹,每个文件的一个文件夹都保存了修订版本。因此,实际的修订版本以散列文件名的形式保存为该层次结构中几层以下的文件。清空垃圾桶(无论哪种方式)都将删除这些文件,但先前的文件夹结构将保留在原位。
删除之前:
/.DocumentRevisions-V100/PerUID/0/5/com.apple.revisions
此文件夹中仍包含以前的版本。
删除后:
/.DocumentRevisions-V100/PerUID/0/5/com.apple.revisions
该文件夹仍然存在,但是为空。
我没有检查其中的其他文件夹/.DocumentRevisions-V100/
,因此没有检查其中的数据库。Siracusa进行了更详细的介绍,但它们似乎包含用于跟踪更改并将用户文件映射到系统保存的修订版的数据库。我相当确定没有文件内容保存在其中,尽管我不确定文件名以及文件名是否存在(是否存在哈希值)。