Tengo un directorio que contiene ~ 3 millones de archivos en ciertos subdirectorios en un servidor Windows 2008. La eliminación manual de los archivos a través de SHIFT + DEL en el directorio raíz lleva años. ¿Hay alguna otra forma de hacer la eliminación de una manera más rápida ?
windows
file-management
Cfinley
fuente
fuente
Respuestas:
ADVERTENCIA: si tiene enlaces simbólicos a directorios
del
, eliminará los directorios reales y no los enlaces simbólicos. Tenga mucho cuidado con esto y no ejecute estos comandos a menos que sepa que no hay enlaces simbólicos dentro del directorio de destino.Regularmente necesito eliminar muchos archivos y directorios de una unidad cifrada WinXP, generalmente alrededor de 22 GB de 500,000 archivos en 45,000 carpetas.
Eliminar con el Explorador de Windows es una basura porque desperdicia mucho tiempo enumerando los archivos. Por lo general, muevo las cosas que necesito eliminar a C: \ stufftodelete y tengo un archivo por lotes deletestuff.bat
rmdir /s/q C:\stufftodelete
. Está programado para ejecutarse por la noche, pero a veces necesito ejecutarlo durante el día, así que cuanto más rápido mejor.Aquí están los resultados de una prueba rápida de una pequeña muestra de 5.85 MB de 960 archivos en 303 carpetas. Ejecuté el método 1 seguido del método 2, luego reinicié los directorios de prueba.
El método 1 elimina los archivos y la estructura de directorios de una sola vez:
El Método 2 tiene un primer paso para eliminar archivos y salidas a nul para evitar la sobrecarga de escritura en la pantalla para cada archivo de inicio. Una segunda pasada limpia la estructura de directorios restante:
Aquí están los resultados de otra prueba usando 404 MB de 19,521 archivos en 3,243 carpetas:
Por lo tanto, no hay mucho, probablemente demasiado cerca para juzgar en una sola prueba.
Editar: he vuelto a probar con muchos más datos, este es un caso típico para mí: 28,3 GB de 1.159.211 archivos en 146.918 carpetas:
¡Guau, el método 2 es casi tres veces más rápido que el método 1! ¡Actualizaré mi deletestuff.bat!
fuente
del
, eliminará los directorios reales y no los enlaces simbólicos. Tenga mucho cuidado con esto y no ejecute estos comandos a menos que sepa que no hay enlaces simbólicos dentro del directorio de destino.Si tiene que eliminar grandes árboles de directorios regularmente, considere almacenar la raíz de ese árbol de directorios en una partición separada, luego simplemente formatee rápidamente cuando necesite eliminar todo. Si necesita automatizar esto, puede usar este comando de DOS:
donde Z: es su partición 'volátil'. Nota: la partición no debe tener etiqueta. Blogueé sobre esto aquí .
fuente
En el símbolo del sistema (Inicio -> Ejecutar ->
cmd
):fuente
Además de copiar / mover archivos muy rápido (usando su propia API), TeraCopy puede eliminar archivos y también es muy rápido. Desde que descubrí TeraCopy no uso una computadora sin ella instalada (si voy a copiar / mover / eliminar).
El mismo instalador instala la edición x64, pero para usarlo debe forzarlo manualmente.
La versión beta que recomiendo sobre las versiones estables: http://blog.codesector.com/2010/09/22/teracopy-2-2-beta-3/
fuente
Hice un archivo bat que hace lo mismo.
hace el trabajo en dos pasos, uno, intenta eliminar los archivos. Y el segundo es tratar de apropiarse de los archivos. y debe cambiarse de acuerdo con su local (significa sí en inglés). Si falla la tarea (por ejemplo, si falla debido al permiso), debe ejecutarla nuevamente. Sin embargo, la segunda ronda no intentará eliminar los archivos eliminados en la primera ronda, por lo que podría ser bastante rápido.
Cómo usarlo. Guardar como delfolder.bat en una ruta de ruta (por ejemplo c: \ windows), luego ejecútelo como
donde foldername es el nombre de la carpeta
En mi prueba, eliminar 123'000 archivos tomó 3 minutos (sata 7200rpm). ¡HURRA!
fuente
%1
en un script, pero"%~1"
. De esta manera, si el argumento se ha pasado con comillas, se quita y vuelve a cotizar. Si no se ha pasado con comillas, se cita.Usar el siguiente código generalmente funciona bien para mí.
fuente
rsync
en Linux. ¿Incluso aquí es más rápido entoncesrmdir
?del /f/q/s
+rmdir /s/q
. Si su dir_to_wipe tiene basurac:\some_important_dir
, terminará perdiendo sus datos.Use el comando rd / s del símbolo del sistema.
fuente
La mejor solución práctica es probablemente mover la carpeta fuera del camino en algún lugar (por ejemplo, la Papelera de reciclaje) y luego comenzar a eliminarla. Tomará años, pero al menos estará fuera del camino.
Estoy bastante seguro de que el tiempo requerido para eliminar todos esos archivos es un requisito inherente de la tarea, no una ineficiencia en la implementación de la eliminación.
fuente
Instale Cygwin y use rm -r . Pero es probable que sea exagerado.
fuente
rd /q /s
...rm
realmente tan rápido como cmd.exe integradord
? Debido a que la emulación cygwin de la interfaz posix es bastante lenta, ya que requiere hacer un trabajo adicional, esorm
no se agradece.rm -rf
. Aproximadamente 10 minutos en aborté y volví adel /f/s/q
porque bajo Cygwin, el uso del disco era solo del 50%. Debajodel
, el uso del disco está vinculado al 100%. Así que me imagino que debe eliminarse más rápido. El uso de la CPU es <1% para ambos métodos. No estoy seguro del número de archivo porque cerré el Windows File Deleter después de que pasó 10 minutos calculando.¿Tiene habilitada la generación de nombres de archivo cortos? Si es así, ¿realmente lo necesitas? Eliminar un archivo es solo una operación de metadatos. Entonces, si tiene el doble de nombres para eliminar, la cantidad de trabajo es significativamente mayor.
fuente
¿Has probado alguna de estas dos aplicaciones?
Asegúrese de establecer el número de sobrescrituras en 0 si desea un rendimiento más rápido. Haga esto haciendo clic en las opciones y luego cambie el valor en la parte inferior del cuadro de diálogo.
Ingrese la ruta a eliminar en el campo Fuente y luego haga clic en Eliminar.
Estas aplicaciones no colocan los archivos en la papelera de reciclaje. Usar con cuidado.
fuente
Esto se proporciona para complementar y aumentar los pasos tomados en las respuestas mencionadas anteriormente.
Los dos métodos anteriores parecen bastante efectivos, pero determinar el rendimiento sería difícil a menos que se comparen con las mismas condiciones:
Luego ejecute las configuraciones a través de Batch File y use el cmdlet Powershell para registrar y medir su rendimiento.
Las siguientes son algunas carpetas de muestra (nombradas como tamaño total) en las que experimenté pero no pude obtener resultados / resultados concluyentes.
r.bat
rd.bat
Potencia Shell:
fuente
La respuesta de Hugo es la más rápida, pero no elimina los archivos ocultos o del sistema en el primer paso, por lo que si desea una solución más completa, use el parámetro / a:
Acerca del archivo BAT de Magallanes , tenga mucho cuidado con takeown y icacls, ya que los enlaces duros comparten los mismos permisos y propietarios, por lo que si hay enlaces duros insaturados en la carpeta que desea eliminar, el uso de takeown e icacls cambiará los permisos y los propietarios de archivos externos. la carpeta.
Usando la herramienta ln.exe puede enumerar todos los archivos vinculados dentro de la carpeta y saber si están vinculados a archivos fuera de la carpeta (enlaces rígidos no saturados):
fuente
Eliminar la carpeta es más rápido que eliminar varios archivos.
Entonces, si prefiere usar el mouse en lugar del símbolo del sistema, puede crear un directorio, mover archivos allí y eliminarlo (con Shift + Del como usted dijo).
fuente