几周前,我小心翼翼地删除了数据驱动器的旧备份。我在旧备份和实时副本之间进行了重复文件检查,并将旧副本删除到回收站。一切进展顺利,正如预期的那样,直到突然间我无法再删除任何内容。每当我尝试删除文件时——任何文件——来自旧备份,它将会失败。
我检查了回收站,我突然想到,这可能是因为文件过多扔进垃圾箱。我不是在说尺寸,但数字文件。以下是有关情况的一些事实:
- 这是一个 Windows XP 系统
- 包含旧备份的卷是 FAT32
- 包含旧备份的卷有 302MB 的可用空间
- 一旦 bin 中有 31,594 个文件,就会出现问题
- 回收的文件占用236MB
- 该
INFO2
文件(跟踪回收文件的原始文件名)超过 24MB - 尝试删除一个文件也无济于事无论大小
- 回收站配置为对所有驱动器无限制
我尝试查找这个,但是我能找到的最接近的是有关限制的信息尺寸回收站,没有关于文件数量。
有人听说过吗?有人能确认多少可以保存文件吗?
答案1
FAT32 目录可以有 65,536 个目录条目。
每个文件和子目录需要 2 到 13 个条目,具体取决于其名称的长度。
因此,在最乐观的情况下,如果所有文件和目录的文件名都在 8.3 范围内,则回收站可以容纳 65,536 /2 = 32768 个文件和目录。(短名称)
您的 31594 个文件 + 53 个目录似乎已达到上限。
可能有一些文件由于文件名较长而占用 2 个以上的条目。
编辑:
FAT32 规范可在此处获得:
http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx
它提供了所有内容的详细信息,包括目录结构和长文件名 (LFN) 在目录中的存储方式。基本上,有一个目录条目始终保存文件名的短版本 (8.3)。由于 Windows 需要区分长文件名 (LFN) 的大小写,因此它为 LFN 提供了一个单独的目录条目(如果它们超过 13 个字符,则需要多个目录条目)。
为了满足访问局部性和透明性的目标,长目录项被定义为具有特殊属性的短目录项。
编辑#2:
我在装有 Windows XP 和 FAT32 驱动器(回收站已调至最大)的虚拟机中做了一些测试。
在data
目录中我创建了一个子目录,test
然后运行这个批处理文件:
@echo off
if "%1"=="####" goto %1
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
goto EOF
:####
echo %2%3%4%5
echo test > test\%2%3%4%5
:EOF
结果是 65534 个文件(仅短名称)。正如预期的那样,由于 2 个目录条目(和),它无法添加最后两个文件(FFFE
和) 。因此和只占用 2 个条目,以后知道这一点很有用)FFFF
.
..
.
..
接下来我选择了 45000 多个文件并在资源管理器中删除了这些文件
(删除前花了一段时间收集信息:)
因为回收站中的文件名是等De1
,De2
这些是长文件名(因为大小写混合)。删除 32765 个文件后,Explorer 出现错误。
给dir /a/x
了我 32767 个文件和 2 个目录。32765
个用户文件(带有低频网)、INFO2
和desktop.ini
(均没有 LFN)。
(32765 * 2)= 65530 + 2(不含 LFN)+ 2 个目录条目 = 65534
嗯,还差 2 个 ;)
有了 65534,它应该能够再加 1(使用 LFN)。所以我认为 Windows 可能需要为某些临时文件添加额外的空闲条目。
但正如你所看到的限制为 65530 个目录条目每个文件占用 2。
(所以32765 个文件因为生成的文件名是大小写混合的甚至更少如果扩展大于 3)。
当我测试这个时,文件名都是De1
,De2
等等...(原始文件都是没有扩展名的文件)您的文件名有扩展名。如果它们的扩展名较长(>3),则可能需要更多条目,因为 Windows 确实会将扩展名保留在回收站中。
但确实奇怪的是微软没有选择在回收站中仅使用短名称,因为(原始)文件名应该存储在INFO2
.
编辑#3:
我刚刚确认了 Windows 的删除机制确实需要额外的目录条目。
我xcopy e:\recycled\*.* e:\test\ /e/s/h
对完整的回收站进行了操作,将所有文件(32767 个文件)从回收站复制到测试目录。
我仍然可以创建 1 个文件De_test1.txt
(LFN) e:\test
。创建时De_test2.txt
出现错误。
因此“Windows 删除”应该足以创建 1 个以上的文件(LFN),但由于内部原因,它无法创建。
因此对于普通文件夹.
对于和,限制为 65536 -2 ..
= 65534 个条目。
对于回收站对于和,它是 65536 -2,对于.
和..
,它是 -2desktop.ini
INFO2
和对于 temp.file (?) = 65530 个条目,则为 -2,
而对于 65530 个条目,则最多有 32765 个文件(并且较少的如果扩展名>3)