GNU/Linux >> Tutoriales Linux >  >> Linux

¿Reducir/restablecer el tamaño del directorio?

Solución 1:

Consulte también rm en un directorio con millones de archivos; relacionado tangencialmente, pero lo discutimos allí.

Hasta donde yo sé, al menos en ext2/3, no, no hay forma (en línea) de reducirlos antes de eliminar + recrear. Sin montar, varias fuentes sugieren e2fsck -D podría funcionar, aunque no puedo reclamar experiencia personal con esa opción.

Algunas referencias para lecturas adicionales:

  • http://linux.derkeiler.com/Mailing-Lists/Kernel/2009-05/threads.html#06569
  • http://fedoraforum.org/forum/showthread.php?t=120654

Solución 2:

Recientemente tuve que eliminar y volver a crear un directorio NFS para reducir su tamaño después de que se había inflado previamente. En el proceso, encontré una forma bastante eficiente de hacer esto usando rsync y enlaces duros. Este método evita copiar los archivos reales, al mismo tiempo que logra el objetivo de recrear el directorio con el mismo contenido.

Dado que necesitábamos tomar tiempo de inactividad para realizar esta operación durante nuestra ventana de mantenimiento, era importante para nosotros que el directorio reconstruido estuviera disponible lo antes posible. Si la simplicidad es más importante para usted, cambie el primer comando de movimiento a 'rm -rf' en el directorio de origen y omita el otro comando 'rm -rf'.

Extraje estos comandos de un proceso más grande y resumí los nombres de los directorios, así que pido disculpas si cometí un error en esa traducción.

mkdir /tmp/holding_dir/
rsync -ai --delete --link-dest=/path/to/source_dir/ /path/to/source_dir/ /tmp/holding_dir/
mv /path/to/source_dir/ /tmp/deleteme/
mv /tmp/holding_dir/ /path/to/source_dir/

Luego, más tarde, eliminamos el directorio. Dependiendo del tamaño, es posible que deba usar una técnica más sofisticada para hacer esto. Por ejemplo, usar rsync con el indicador --delete para sincronizar un directorio vacío en este directorio puede ser más eficiente.

rm -rf /tmp/deleteme/

Solución 3:

Yo lo haría así.

cp -al antiguo nuevodir && mv dirección antigua nombre temporal && mv nuevodir dirección antigua && rm -r nombre temporal

donde olddir es el directorio que desea reducir newdir y nombre temporal son nombres de archivos temporales

cp -al crea enlaces al contenido de olddir en nuevodir y los siguientes tres comandos los intercambian con newdir y limpian.


Linux
  1. Reduzca el tamaño del PDF con este truco de línea de comandos

  2. ¿Por qué el tamaño de un directorio siempre es de 4096 bytes en Unix?

  3. Obtener el tamaño de todas las carpetas en el directorio

  4. Restringir el tamaño del directorio

  5. setfacl para restablecer el archivo a los permisos predeterminados?

Cómo obtener el tamaño de un directorio en Linux

Cómo obtener el tamaño de un directorio en Linux

Cómo encontrar el tamaño de un directorio en Linux

Cómo encontrar el tamaño total de un directorio en Linux

Cómo restablecer la contraseña del usuario administrador de weblogic

Cómo verificar el tamaño de los archivos y directorios en Linux