Syn*_*ech 5 recycle-bin windows-xp
几周前,我小心地删除了数据驱动器的旧备份。我在旧备份和实时副本之间进行了重复文件检查,并将旧副本删除到回收站。一切都很好,正如预期的那样,直到突然我无法再删除任何内容。每当我尝试从旧备份中删除文件(任何文件)时,它都会失败。
我检查了回收站,突然想到可能是因为回收站中的文件太多了。我不是在谈论size,而是在谈论文件的数量。以下是关于这种情况的一些事实:
INFO2
文件(跟踪回收文件的原始文件名)超过 24MB我试着查了一下,但我能找到的最接近的是关于回收站大小限制的信息,而不是关于文件数量的信息。
有谁听说过吗?任何人都可以确认有一个限制多少文件可以存储在哪里?
FAT32 目录可以有 65,536 个目录项。
\n\n每个文件和\xc2\xa0 子目录包含 2 到 13 个条目,具体取决于其名称的 \xc2\xa0 长度。
\n\n因此,在最乐观的情况下,如果文件名都在 8.3 范围内,您的回收站可以容纳 65,536 /2 = 32768 个文件+目录。(简称)
\n\n您的 31594 个文件 + 53 个目录似乎已达到限制。
\n由于文件名较长,可能有一些文件需要超过 2 个条目。
编辑:
\n\nFAT32 规范可在此处获取:
\n http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx
它提供了所有内容的详细信息,包括目录结构和\xc2\xa0长文件名(LFN)在目录中存储的方式。\xc2\xa0基本上,有一个目录条目始终保存短\xc2\xa0(8.3 ) 文件名的版本。由于 Windows 需要区分长文件名 (LFN) 的大小写,因此需要为 LFN 提供单独的目录条目(如果长度超过 13 个字符,则为多个目录条目)。
\n\n\n\n\n为了满足访问局部性和透明性的目标,长目录项被定义为具有特殊属性的短目录项。
\n
编辑#2:
\n\n我在装有 Windows XP 和 FAT32 驱动器(最大回收站)的虚拟机中进行了一些测试。
\n\n在一个data
目录中,我创建了一个子目录test
,然后运行此批处理文件:
@echo off\nif "%1"=="####" goto %1\n for %%a in (0 1 2 3 4 5 6 7 8 9 A B C D E F) do call %0 #%1 %2 %3 %4 %%a\n goto EOF\n:####\n echo %2%3%4%5\n echo test > test\\%2%3%4%5\n:EOF\n
Run Code Online (Sandbox Code Playgroud)\n\n生成 65534 个文件(仅包含短名称)。\n正如预期的那样,由于 2 个目录条目(FFFE
和) ,它无法添加最后两个文件( 和)。所以只取 2 个条目,稍后再了解)FFFF
.
..
.
..
接下来我选择了 45000 多个文件并在资源管理器中删除了这些文件
\n(在删除之前花了一些时间来收集信息:)
因为回收站中的文件名是等De1
,De2
这些都是长文件名(因为大小写混合)。删除 32765 个文件后,资源管理器出现错误。
给dir /a/x
了我 32767 个文件和 2 个目录。
\n32765 个用户文件(带有LFN),一个INFO2
和desktop.ini
(都没有 LFN )。
(32765 * 2) = 65530 + 2 (不含 LFN) + 2 个目录条目 = 65534
\n\n嗯,还有 2 点;)
\n\n对于 65534,它应该能够再添加 1(使用 LFN)。所以我认为 Windows 可能需要一个额外的免费条目来存放一些临时文件。
\n\n但正如您所看到的,限制是 65530 个目录条目,其中每个文件占用 2 个目录条目
。 \n(因此为32765 个文件,因为生成的文件名是大小写混合的,如果扩展名大于 3,则数量甚至更少)。
当我测试这个时,文件名都是De1
,De2
等等...(所有文件没有扩展名的原始文件)您的文件名有扩展名。如果它们具有较长的扩展名 (>3),则可能需要更多条目,因为 Windows 会在回收站中保留扩展名。
但确实奇怪的是,微软并没有选择在回收站中只使用短名称,因为(原始)文件名应该存储在INFO2
.
编辑#3:
\n\n我刚刚确认Windows的删除机制确实需要一个额外的目录项。
\n\n我使用了xcopy e:\\recycled\\*.* e:\\test\\ /e/s/h
完整的回收站,将回收站中的所有文件(32767 个文件)复制到测试目录。
我仍然可以De_test1.txt
在e:\\test
. 创建时De_test2.txt
出错。
因此,“Windows 删除”应该足以再创建 1 个 (LFN) 文件,但由于内部原因,它不能。
\n\n因此,对于普通文件夹,限制为 65536 -2.
和..
= 65534 个条目。
\n对于回收站,对于.
和为 65536 -2,..
对于desktop.ini
和INFO2
\n为-2,对于临时文件 (?) = 65530 个条目
\n对于 65530 个条目,最多为 32765 个文件(如果是则更少)扩展>3)。