回收站中的文件数量有限制吗?

回收站中的文件数量有限制吗?

几周前,我小心翼翼地删除了数据驱动器的旧备份。我在旧备份和实时副本之间进行了重复文件检查,并将旧副本删除到回收站。一切进展顺利,正如预期的那样,直到突然间我无法再删除任何内容。每当我尝试删除文件时——任何文件——来自旧备份,它将会失败。

我检查了回收站,我突然想到,这可能是因为文件过多扔进垃圾箱。我不是在说尺寸,但数字文件。以下是有关情况的一些事实:

  • 这是一个 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 多个文件并在资源管理器中删除了这些文件
(删除前花了一段时间收集信息:)

因为回收站中的文件名是等De1De2这些是长文件名(因为大小写混合)。删除 32765 个文件后,Explorer 出现错误。

dir /a/x了我 32767 个文件和 2 个目录。32765
个用户文件(带有低频网)、INFO2desktop.ini(均没有 LFN)。

(32765 * 2)= 65530 + 2(不含 LFN)+ 2 个目录条目 = 65534

嗯,还差 2 个 ;)

有了 65534,它应该能够再加 1(使用 LFN)。所以我认为 Windows 可能需要为某些临时文件添加额外的空闲条目。

但正如你所看到的限制为 65530 个目录条目每个文件占用 2。
(所以32765 个文件因为生成的文件名是大小写混合的甚至更少如果扩展大于 3)。

当我测试这个时,文件名都是De1De2等等...(原始文件都是没有扩展名的文件)您的文件名有扩展名。如果它们的扩展名较长(>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.iniINFO2
对于 temp.file (?) = 65530 个条目,则为 -2,
而对于 65530 个条目,则最多有 32765 个文件(并且较少的如果扩展名>3)

相关内容