Ограничить количество файлов в корзине?

Ограничить количество файлов в корзине?

Пару недель назад я осторожно удалял старую резервную копию своего диска с данными. Я сделал проверку на наличие дубликатов файлов между старой резервной копией и рабочей копией и удалил старые копии в корзину. Все шло просто отлично и как и ожидалось, пока внезапно я больше не мог ничего удалить. Всякий раз, когда я пытался удалить файл —любойфайл — из старой резервной копии, то он не будет работать.

Я проверил корзину и мне пришло в голову, что это может быть потому, что там простослишком много файловв мусорное ведро. Я не говорю оразмер, ночислофайлов. Вот несколько фактов о ситуации:

  • Это система Windows XP.
  • Том со старой резервной копией — FAT32
  • На томе со старой резервной копией было 302 МБ свободного места.
  • Проблема возникла, когда в корзине было 31 594 файла.
  • Переработанные файлы использовали 236 МБ
  • Файл INFO2(который отслеживает исходные имена файлов переработанного файла) имеет размер более 24 МБ.
  • Попытка удалить еще один файл не сработает.независимо от его размера
  • Корзина настроена так, чтобы не иметь ограничений на всех дисках.

Я пытался это выяснить, ноближайший, который я смог найтиэто информация об ограниченияхразмеро мусорной корзине, ничего околичество файлов.

Кто-нибудь слышал об этом? Может ли кто-нибудь подтвердить, что есть пределсколькофайлы можно хранить?

Скриншот «полной» корзины

решение1

Каталог FAT32 может содержать 65 536 записей каталога.

Каждый файл и подкаталог занимает от двух до тринадцати записей, в зависимости от длины его имени.

Таким образом, в самом оптимистичном случае ваша корзина может содержать 65 536 / 2 = 32 768 файлов+каталогов, если все они имеют имена файлов в диапазоне 8,3. (Короткие имена)

Ваши 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

FFFEВ результате получилось 65534 файла (только с короткими именами). Как и ожидалось, последние два файла ( и ) не удалось добавить FFFFиз-за 2 записей каталога ( .и ..). Поэтому .и ..берем только 2 записи, полезно знать на будущее)

Далее я выбрал более 45000 файлов и удалил их в проводнике
(потребовалось некоторое время, чтобы собрать информацию перед удалением :)

Поскольку имена файлов в корзине — De1и De2т. д., это длинные имена файлов (из-за смешанного регистра). Проводник выдал ошибку после удаления 32765 файлов.

Мне дали dir /a/x32767 файлов и 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 сохраняет расширение в корзине.

Но действительно странно, что Microsoft не решила помещать в корзину только короткие имена, поскольку (исходные) имена файлов должны храниться в формате INFO2.


Редактирование №3:

Я только что подтвердил, что механизм удаления Windowsнужно лидополнительная запись в каталоге.

Я сделал это xcopy e:\recycled\*.* e:\test\ /e/s/hс полной корзиной, скопировав все файлы (32767 файлов) из корзины в тестовый каталог.

Я все еще мог создать 1 файл De_test1.txt(LFN) в e:\test. Создание De_test2.txtвыдало ошибку.

Таким образом, «Windows Delete» должно было бы создать еще один файл (LFN), но из-за каких-то внутренних причин это не удалось.

Таким образом, дляобычные папкипредел составляет 65536 -2 для .и ..= 65534 записей.
и длякорзинаэто 65536 -2 для .и ..и -2 для desktop.iniиINFO2
и-2 для временного файла (?) = 65530 записей
, а при 65530 записях это максимум 32765 файлов (именьшеесли расширения >3).

Связанный контент