Cómo compactar un directorio

21

De vez en cuando, algunas aplicaciones se ejecutan de manera salvaje y llenan un directorio con una gran cantidad de archivos. Una vez que arreglamos el error y limpiamos los archivos, el directorio permanece grande (> 50 MB) aunque solo contenga entre 20 y 30 archivos.

¿Hay algún comando que compacta un directorio sin tener que volver a crearlo?

Puntos de bonificación: ¿un enorme directorio vacío afecta el rendimiento de acceso de ese directorio? Supongo que sí, pero tal vez no valga la pena molestarse. Parece más lento hacerlo lsen dicho directorio.

Mathieu Longtin
fuente
No creo que exista tal cosa (pero, por supuesto, podría estar completamente equivocado). Sin embargo, tal vez algunas herramientas específicas del sistema de archivos: ¿qué FS estás usando?
Mat
ext3, pero he visto ese problema en la mayoría de los sistemas de archivos con los que he tratado en el mundo de Unix. Tampoco creo que exista una herramienta así, pero me gustaría que se demuestre que estoy equivocado.
Mathieu Longtin
44
Etiqueté su pregunta "ext3" ya que esta pregunta es muy específica del sistema de archivos. No sé la respuesta para ext3 (sospecho que necesita volver a crear el directorio para que se reduzca) pero ¿ha intentado forzar un fsck? ext3 fscktiene un pase de "Optimización del directorio". No sé qué hace eso, pero ¿tal vez reduce los directorios que son demasiado grandes? De todos modos, como punto de datos FWIW, xfs reduce automáticamente directorios a los que se les han eliminado archivos.
Celada
¿Has borrado por casualidad los archivos abiertos?
Karlson
1
ufs en los BSD y Mac HFS también reducen los directorios sobre la marcha. Me sorprende saber que ext3 no. ext4 tampoco parece hacerlo.
Kyle Jones

Respuestas:

10

Se ejecuta e2fsck -Den el sistema de archivos desmontado.

psusi
fuente
1
Esperaba algo menos perturbador.
Mathieu Longtin
1
@MathieuLongtin, también puede mover todo a un nuevo directorio, eliminar el antiguo y cambiar el nombre del nuevo.
psusi
Conocía ese truco, pero puede estropear los procesos usando el directorio como directorio de trabajo actual.
Mathieu Longtin