Cuando administro sistemas Linux, a menudo me encuentro luchando por localizar al culpable después de que una partición se llena. Normalmente uso, du / | sort -nr
pero en un sistema de archivos grande, esto lleva mucho tiempo antes de que se devuelvan los resultados.
Además, esto suele ser exitoso para resaltar al peor delincuente, pero a menudo me encuentro recurriendo du
sin el sort
en los casos más sutiles y luego tuve que rastrear a través de la salida.
Prefiero una solución de línea de comandos que se base en comandos estándar de Linux ya que tengo que administrar bastantes sistemas e instalar un nuevo software es una molestia (¡especialmente cuando no hay espacio en el disco!)
command-line
partition
disk-usage
command
Stephen Kitt
fuente
fuente
Respuestas:
Pruebe
ncdu
, un excelente analizador de uso de disco de línea de comandos:fuente
sudo apt install ncdu
en ubuntu lo consigue fácilmente. Es genialncdu -x
para contar solo archivos y directorios en el mismo sistema de archivos que el directorio que se está escaneando.sudo ncdu -rx /
debería dar una lectura limpia en los directorios / archivos más grandes SOLAMENTE en la unidad de área raíz. (-r
= solo lectura,-x
= permanecer en el mismo sistema de archivos (es decir: no atravesar otros montajes del sistema de archivos))No vayas directamente a
du /
. Úselodf
para encontrar la partición que lo está lastimando, y luego pruebe losdu
comandos.Una que me gusta probar es
porque imprime tamaños en "forma legible por humanos". A menos que tenga particiones realmente pequeñas, la búsqueda de directorios en gigabytes es un filtro bastante bueno para lo que desea. Esto le llevará un tiempo, pero a menos que tenga cuotas establecidas, creo que así será.
Como @jchavannes señala en los comentarios, la expresión puede ser más precisa si encuentra demasiados falsos positivos. Incorporé la sugerencia, que lo hace mejor, pero todavía hay falsos positivos, por lo que solo hay compensaciones (expr más simple, peores resultados; expr más complejo y más largo, mejores resultados). Si tiene demasiados directorios pequeños que aparecen en su salida, ajuste su expresión regular en consecuencia. Por ejemplo,
es aún más preciso (no se enumerarán directorios <1GB).
Si lo tienen cuotas, puede utilizar
para encontrar usuarios que acaparan el disco.
fuente
grep '[0-9]G'
contenía muchos falsos positivos y también omitió los decimales. Esto funcionó mejor para mí:sudo du -h / | grep -P '^[0-9\.]+G'
[GT]
lugar de soloG
du -h | sort -hr | head
Para una primera mirada, use la vista "resumen" de
du
:El efecto es imprimir el tamaño de cada uno de sus argumentos, es decir, cada carpeta raíz en el caso anterior.
Además, tanto GNU
du
como BSDdu
pueden tener restricciones de profundidad (¡ pero POSIXdu
no puede! ):GNU (Linux, ...):
BSD (macOS, ...):
Esto limitará la visualización de salida a la profundidad 3. El tamaño calculado y mostrado sigue siendo el total de la profundidad total, por supuesto. Pero a pesar de esto, restringir la profundidad de visualización acelera drásticamente el cálculo.
Otra opción útil es
-h
(palabras en GNU y BSD pero, una vez más, no solo en POSIXdu
) para salida "legible para humanos" (es decir, usando KiB, MiB, etc. ).fuente
du
queja de-d
probar--max-depth 5
en su lugar.du -hcd 1 /directory
. -h para lectura humana, c para total yd para profundidad.du -hd 1 <folder to inspect> | sort -hr | head
du --max-depth 5 -h /* 2>&1 | grep '[0-9\.]\+G' | sort -hr | head
para filtrar Permiso denegadoTambién puede ejecutar el siguiente comando usando
du
:-s
opción resume y muestra el total de cada argumento.h
imprime Mio, Gio, etc.x
= permanecer en un sistema de archivos (muy útil).P
= no siga los enlaces simbólicos (lo que podría hacer que los archivos se cuenten dos veces, por ejemplo).Tenga cuidado, el
/root
directorio no se mostrará, debe ejecutarlo~# du -Pshx /root 2>/dev/null
para obtenerlo (una vez, me costó mucho no señalar que mi/root
directorio se había llenado).Editar: Opción corregida -P
fuente
du -Pshx .* * 2>/dev/null
+ directorios ocultos / del sistemaEncontrar los archivos más grandes en el sistema de archivos siempre llevará mucho tiempo. Por definición, debe atravesar todo el sistema de archivos en busca de archivos grandes. La única solución es probablemente ejecutar un trabajo cron en todos sus sistemas para tener el archivo listo con anticipación.
Otra cosa, la opción x de du es útil para evitar que du siga los puntos de montaje en otros sistemas de archivos. Es decir:
El comando completo que suelo ejecutar es:
Los
-m
resultados medios devuelven en megabytes, ysort -rn
ordenarán primero el mayor número de resultados. Luego puede abrir use.txt en un editor, y las carpetas más grandes (comenzando con /) estarán en la parte superior.fuente
-x
bandera!ncdu
- por lo menos más rápido quedu
ofind
(dependiendo de la profundidad y argumentos) ..sudo du -xm / | sort -rn > ~/usage.txt
Siempre uso
du -sm * | sort -n
, lo que le da una lista ordenada de cuánto usan los subdirectorios del directorio de trabajo actual, en mebibytes.También puede probar Konqueror, que tiene un modo de "vista de tamaño", que es similar a lo que hace WinDirStat en Windows: le brinda una representación visual de qué archivos / directorios utilizan la mayor parte de su espacio.
Actualización: en versiones más recientes, también puede usar las
du -sh * | sort -h
que mostrarán tamaños de archivos legibles por humanos y los ordenarán por esos. (los números tendrán el sufijo K, M, G, ...)Para las personas que buscan una alternativa a la vista de tamaño de archivo Konqueror de KDE3, pueden echar un vistazo a la luz de archivo, aunque no es tan agradable.
fuente
Lo uso para los 25 peores delincuentes principales debajo del directorio actual
fuente
-h
, es probable que cambie el efecto delsort -nr
comando, lo que significa que la ordenación ya no funcionará, y luego elhead
comando tampoco funcionará másEn una empresa anterior, teníamos un trabajo cron que se ejecutaba de la noche a la mañana e identificaba cualquier archivo de cierto tamaño, por ejemplo
encontrar / -size + 10000k
Es posible que desee ser más selectivo sobre los directorios que está buscando y tener cuidado con las unidades montadas de forma remota que podrían desconectarse.
fuente
-x
opción de buscar para asegurarse de no encontrar archivos en otros dispositivos que no sean el punto de inicio de su comando de búsqueda. Esto soluciona el problema de las unidades montadas de forma remota.Una opción sería ejecutar su comando du / sort como un trabajo cron y enviarlo a un archivo, de modo que ya esté allí cuando lo necesite.
fuente
Para la línea de comandos, creo que el método du / sort es el mejor. Si no está en un servidor, debería echar un vistazo a Baobab - Analizador de uso de disco . Este programa también tarda un tiempo en ejecutarse, pero puede encontrar fácilmente el subdirectorio en el fondo, donde se encuentran todos los ISO de Linux antiguos.
fuente
yo suelo
y cambio la profundidad máxima para adaptarme a mis necesidades. La opción "c" imprime totales para las carpetas y la opción "h" imprime los tamaños en K, M o G según corresponda. Como han dicho otros, todavía escanea todos los directorios, pero limita la salida de una manera que me resulta más fácil encontrar los directorios grandes.
fuente
Voy a segunda
xdiskusage
. Pero voy a agregar en la nota que en realidad es una interfaz de usuario y puede leer la salida de un archivo. Para que pueda ejecutardu -ax /home > ~/home-du
en su servidor,scp
recuperar el archivo y luego analizarlo gráficamente. O canalizarlo a través de ssh.fuente
Intente alimentar la salida de du en un script awk simple que verifica si el tamaño del directorio es mayor que algún umbral, si es así, lo imprime. No tiene que esperar a que se atraviese todo el árbol antes de comenzar a obtener información (frente a muchas de las otras respuestas).
Por ejemplo, a continuación se muestran los directorios que consumen más de aproximadamente 500 MB.
Para hacer que lo anterior sea un poco más reutilizable, puede definir una función en su .bashrc (o puede convertirlo en un script independiente).
Por lo tanto,
dubig 200 ~/
busca en el directorio de inicio (sin seguir los enlaces simbólicos del dispositivo) los directorios que usan más de 200 MB.fuente
du -k
lo haré absolutamente seguro de que du está usando unidades KBdu -kx $2 | awk '$1>'$(($1*1024))
(si especifica solo una condición, también conocida como patrón para awk, la acción predeterminada esprint $0
)du -kx / | awk '$1 > 500000'
du -kx / | tee /tmp/du.log | awk '$1 > 500000'
. Esto es muy útil porque si su primer filtrado resulta infructuoso, puede probar otros valores como esteawk '$1 > 200000' /tmp/du.log
o inspeccionar la salida completa como estasort -nr /tmp/du.log|less
sin volver a escanear todo el sistema de archivosMe gusta el viejo xdiskusage como una alternativa gráfica a du (1).
fuente
Prefiero usar lo siguiente para obtener una visión general y profundizar desde allí ...
Esto mostrará resultados con salida legible para humanos, como GB, MB. También evitará atravesar sistemas de archivos remotos. La
-s
opción solo muestra un resumen de cada carpeta encontrada para que pueda profundizar más si está interesado en obtener más detalles de una carpeta. Tenga en cuenta que esta solución solo mostrará carpetas, por lo que querrá omitir el / después del asterisco si también desea archivos.fuente
No se menciona aquí, pero también debe verificar lsof en caso de archivos borrados / colgados. Tuve un archivo tmp eliminado de 5.9GB de un cronjob que se escapó.
https://serverfault.com/questions/207100/how-can-i-find-phantom-storage-usage Me ayudó a encontrar el propietario del proceso de dicho archivo (cron) y luego pude ir
/proc/{cron id}/fd/{file handle #}
al archivo menos pregunta para iniciar la ejecución, resolver eso y luego hacer eco ""> del archivo para liberar espacio y dejar que cron se cierre con gracia.fuente
Desde el terminal, puede obtener una representación visual del uso del disco con dutree
Es muy rápido y ligero porque está implementado en Rust
Ver todos los detalles de uso en el sitio web
fuente
Para la línea de comando du (y sus opciones) parece ser la mejor manera. Parece que DiskHog también utiliza información du / df de un trabajo cron, por lo que la sugerencia de Peter es probablemente la mejor combinación de simple y eficaz.
( FileLight y KDirStat son ideales para la GUI).
fuente
Puede usar herramientas estándar como
find
ysort
para analizar el uso de espacio en disco.Listar directorios ordenados por su tamaño:
Lista de archivos ordenados por su tamaño:
fuente
Tal vez valga la pena señalar que
mc
(Midnight Commander, un administrador de archivos clásico en modo de texto) muestra de forma predeterminada solo el tamaño de los inodos de directorio (generalmente4096
) pero con CtrlSpaceo con las Herramientas de menú puede ver el espacio ocupado por el directorio seleccionado en una lectura humana formato (por ejemplo, algunos como103151M
).Por ejemplo, la imagen a continuación muestra el tamaño completo de las distribuciones de Vanilla TeX Live de 2018 y 2017, mientras que las versiones de 2015 y 2016 muestran solo el tamaño del inodo (pero tienen realmente cerca de 5 Gb cada una).
Es decir, CtrlSpacedebe hacerse uno por uno, solo para el nivel de directorio real, pero es tan rápido y práctico cuando está navegando
mc
que tal vez no lo necesitencdu
(de hecho, solo para este propósito es mejor). De lo contrario, también puede ejecutarncdu
desdemc
. sin salirmc
o lanzar otra terminal.fuente
Al principio verifico el tamaño de los directorios, así:
fuente
Si sabe que los archivos grandes se han agregado en los últimos días (por ejemplo, 3), puede usar un comando de búsqueda junto con "
ls -ltra
" para descubrir los archivos agregados recientemente:Esto le dará solo los archivos ("
-type f
"), no los directorios; solo los archivos con tiempo de modificación en los últimos 3 días ("-mtime -3
") y ejecutar "ls -lart
" contra cada archivo encontrado ("-exec
" parte).fuente
Para comprender el uso desproporcionado del espacio en disco, a menudo es útil comenzar en el directorio raíz y recorrer algunos de sus elementos secundarios más grandes.
Podemos hacer esto por
Es decir:
ahora digamos que / usr parece demasiado grande
ahora si / usr / local es sospechosamente grande
y así...
fuente
He usado este comando para buscar archivos de más de 100Mb:
fuente
He tenido éxito rastreando al (los) peor (s) delincuente (s) canalizando la
du
salida en forma legible por humanosegrep
y haciendo coincidir una expresión regular.Por ejemplo:
lo que debería devolverte todo 500 megas o más.
fuente
du -k | awk '$1 > 500000'
. Es mucho más fácil de entender, editar y corregir en el primer intento.Si desea velocidad, puede habilitar cuotas en los sistemas de archivos que desea monitorear (no necesita establecer cuotas para ningún usuario) y usar un script que use el comando de cuota para enumerar el espacio en disco que usa cada usuario. Por ejemplo:
le daría el uso del disco en bloques para el usuario particular en el sistema de archivos particular. Debería poder verificar los usos en cuestión de segundos de esta manera.
Para habilitar las cuotas, deberá agregar usrquota a las opciones del sistema de archivos en su archivo / etc / fstab y luego probablemente reiniciar para que se pueda ejecutar quotacheck en un sistema de archivos inactivo antes de llamar a quotaon.
fuente
Aquí hay una pequeña aplicación que utiliza un muestreo profundo para encontrar tumores en cualquier disco o directorio. Recorre el árbol del directorio dos veces, una para medirlo y la segunda para imprimir las rutas a 20 bytes "aleatorios" en el directorio.
El resultado se ve así para mi directorio de Archivos de programa:
Me dice que el directorio es 7.9gb, de los cuales
Es bastante simple preguntar si alguno de estos puede descargarse.
También informa sobre los tipos de archivos que se distribuyen en todo el sistema de archivos, pero en conjunto representan una oportunidad para ahorrar espacio:
También muestra muchas otras cosas allí, que probablemente podría prescindir, como "SmartDevices" y el soporte "ce" (~ 15%).
Lleva tiempo lineal, pero no tiene que hacerse a menudo.
Ejemplos de cosas que ha encontrado:
fuente
Tuve un problema similar, pero las respuestas en esta página no fueron suficientes. El siguiente comando me pareció el más útil para el listado:
du -a / | sort -n -r | head -n 20
Lo que me mostraría a los 20 mayores delincuentes. Sin embargo, aunque ejecuté esto, no me mostró el verdadero problema, porque ya había eliminado el archivo. El problema fue que todavía había un proceso en ejecución que hacía referencia al archivo de registro eliminado ... así que tuve que matar ese proceso primero y luego el espacio en disco apareció como libre.
fuente
Puede usar DiskReport.net para generar un informe web en línea de todos sus discos.
Con muchas ejecuciones, le mostrará un gráfico de historial para todas sus carpetas, fácil de encontrar lo que ha crecido
fuente
Hay una buena pieza de software gratuito multiplataforma llamada JDiskReport que incluye una GUI para explorar lo que ocupa todo ese espacio.
Captura de pantalla de ejemplo:
Por supuesto, tendrá que limpiar un poco de espacio manualmente antes de poder descargarlo e instalarlo, o descargarlo a una unidad diferente (como una unidad de memoria USB).
(Copiado aquí de la respuesta del mismo autor en una pregunta duplicada)
fuente