У меня есть каталог, который содержит ~ 3 миллиона файлов в определенных подкаталогах на сервере Windows 2008. Удаление файлов вручную с помощью клавиш SHIFT + DEL в корневом каталоге занимает много времени. Есть ли другой способ сделать удаление более быстрым способом?
windows
file-management
Cfinley
источник
источник
Ответы:
ВНИМАНИЕ: если у вас есть символические ссылки на каталоги, то
del
будут удалены реальные каталоги, а не символические ссылки. Будьте очень осторожны с этим и не запускайте эти команды, если вы не знаете, что в целевом каталоге нет символических ссылок.Мне регулярно нужно удалять множество файлов и каталогов с зашифрованного диска WinXP, обычно около 22 ГБ из 500 000 файлов в 45 000 папок.
Удаление с помощью проводника Windows - это чушь, потому что перечисление файлов тратит много времени. Я обычно перемещаю материал, который мне нужно удалить, в C: \ stufftodelete и имею пакетный файл deletestuff.bat в
rmdir /s/q C:\stufftodelete
. Запуск запланирован на ночь, но иногда мне нужно запускать его днем, поэтому чем быстрее, тем лучше.Вот результаты быстрого тестирования небольшого 5,85 МБ образца из 960 файлов в 303 папках. Я запустил метод 1, затем метод 2, а затем сбросил тестовые каталоги.
Метод 1 удаляет файлы и структуру каталогов за один проход:
Метод 2 имеет первый проход для удаления файлов и выводит значение nul, чтобы избежать накладных расходов при записи на экран для каждого отдельного файла. Второй проход очищает оставшуюся структуру каталогов:
Вот результаты другого теста с использованием 404 МБ из 19 521 файла в 3243 папках:
Так что в этом не так много, вероятно, слишком близко, чтобы судить об одном тесте.
Изменить: я еще раз проверил с гораздо большим количеством данных, это типичный случай для меня: 28,3 ГБ из 1159 211 файлов в 146 918 папках:
Вау, метод 2 почти в три раза быстрее, чем метод 1! Я буду обновлять мой deletestuff.bat!
источник
del
будут удалены реальные каталоги, а не символические ссылки. Будьте очень осторожны с этим и не запускайте эти команды, если вы не знаете, что в целевом каталоге нет символических ссылок.Если вам приходится регулярно удалять большие деревья каталогов, рассмотрите возможность хранения корня этого дерева каталогов в отдельном разделе, а затем просто быстро отформатируйте его, когда вам нужно все удалить. Если вам нужно автоматизировать это, вы можете использовать эту команду DOS:
где Z: ваш «изменчивый» раздел. Примечание: раздел не должен иметь метки. Я писал об этом здесь .
источник
В командной строке (Пуск -> Выполнить ->
cmd
):источник
В дополнение к очень быстрому копированию / перемещению файлов (используя собственный API), TeraCopy может удалять файлы, и это очень быстро. С тех пор, как я обнаружил TeraCopy, я не использую компьютер без установленного (если я собираюсь скопировать / переместить / удалить).
Тот же установщик устанавливает версию x64, но для ее использования необходимо принудительно ее принудительно установить.
Бета-версия, которую я рекомендую для стабильных версий: http://blog.codesector.com/2010/09/22/teracopy-2-2-beta-3/
источник
Я сделал файл летучей мыши, который делает то же самое.
он выполняет работу в два этапа, один, он пытается удалить файлы. И второе - попытаться завладеть файлами. у должен быть изменен в соответствии с вашим местным (обозначать «да» на английском). Если выполнить задачу не удалось (например, если произошел сбой из-за разрешения), вы должны запустить ее снова. Тем не менее, второй раунд не будет пытаться удалить файлы, удаленные в первом раунде, поэтому это может быть довольно быстро.
Как это использовать. Сохраните файл delfolder.bat в пути маршрута (например, c: \ windows), затем запустите его как
где foldername - это имя папки
В моем тесте удаление 123'000 файлов заняло 3 минуты (sata 7200rpm). УРА!
источник
%1
в скрипте, но"%~1"
. Таким образом, если аргумент был передан с кавычками, он удаляется и цитируется. Если он не был передан с кавычками, он цитируется.Использование кода ниже, как правило, хорошо работает для меня.
источник
rsync
в Linux. Это даже здесь быстрее тогдаrmdir
?del /f/q/s
+rmdir /s/q
. Если у вашего dir_to_wipe есть ненужные ссылки,c:\some_important_dir
вы потеряете ваши данные.Используйте команду rd / s из командной строки.
источник
Лучшее практическое решение, вероятно, состоит в том, чтобы убрать папку куда-нибудь (например, в корзину) и затем начать ее удаление. Это займет целую вечность, но по крайней мере это будет в стороне.
Я почти уверен, что время, необходимое для удаления всех этих файлов, является неотъемлемым требованием задачи, а не неэффективностью в реализации удаления.
источник
Установите Cygwin и используйте rm -r . Но это может быть излишним.
источник
rd /q /s
...rm
так же быстро, как встроенный cmd.exerd
? Поскольку эмуляция cygwin в интерфейсе posix довольно медленная, так как требует дополнительной работы, этоrm
не очень полезно.rm -rf
. Примерно через 10 минут я прервал работу и вернулся к ней,del /f/s/q
потому что в Cygwin использование диска составляло только 50%. Подdel
, использование диска привязано на 100%. Так что я думаю, что это должно быть удаление быстрее. Загрузка ЦП <1% для обоих методов. Я не уверен в номере файла, потому что я закрыл Windows File Deleter после того, как он потратил 10 минут на вычисления.У вас включена генерация коротких имен файлов? Если это так, вам это действительно нужно? Удаление файла - только операция метаданных. Так что если вам нужно удвоить количество имен для удаления, объем работы значительно выше.
источник
Вы пробовали любое из этих двух приложений?
Обязательно установите количество перезаписей равным 0, если вы хотите добиться максимальной производительности. Сделайте это, щелкнув параметры, а затем измените значение в нижней части диалогового окна.
Введите путь для удаления в поле «Источник» и нажмите «Удалить».
Эти приложения не помещают файлы в корзину. Используйте с осторожностью.
источник
Это сделано для того, чтобы дополнить и дополнить шаги, предпринятые в ранее упомянутых ответах.
Приведенные выше два метода кажутся довольно эффективными, но определить производительность будет сложно, если они не будут сопоставлены с точно такими же условиями:
Затем выполните настройки через пакетный файл и используйте командлет Powershell для регистрации и измерения их производительности.
Ниже приведены примеры папок (названных как общий размер), над которыми я экспериментировал, но не смог получить каких-либо убедительных результатов / результатов.
r.bat
rd.bat
Powershell:
источник
Ответ от Hugo самый быстрый, но он не удаляет скрытые или системные файлы при первом проходе, поэтому, если вы хотите более полное решение, используйте параметр / a:
Что касается BAT-файла от Magallanes , будьте очень осторожны с takeown и icacls, потому что жесткие ссылки имеют одинаковые разрешения и владельцев, поэтому, если в папке есть ненасыщенные жесткие ссылки, которые вы хотите удалить, использование takeown и icacls изменит разрешения и владельцев файлов за пределами Папка.
С помощью инструмента ln.exe вы можете перечислить все файлы, которые жестко связаны внутри папки, и узнать, связаны ли они с файлами вне папки (ненасыщенные жесткие ссылки):
источник
Удаление папки происходит быстрее, чем удаление нескольких файлов.
Поэтому, если вы предпочитаете использовать мышь вместо командной строки, вы можете создать каталог, переместить туда файлы и удалить его (как вы сказали, Shift + Del).
источник