Archive for the category ‘Programación’

Eliminando muchos archivos en un directorio en Linux

By Luigi Keynes

Necesitaba depurar un directorio donde se cachean archivos de uno de mis sitios. La cantidad de archivos era muy grande, al menos mas de un millón.

Traté de utilizar el comando rm a secas:

# rm /directorio_de_caches/*

Pero me apareció el siguiente mensaje:

bash: /usr/bin/rm: The parameter or environment lists are too long

Este mensaje significa que mensaje anterior indica que el kernel de Linux tiene una cantidad fija de memoria disponible para el ambiente de ejecución del programa y la lista de argumentos, la cual no es suficiente para realizar la operación solicitada. En este caso significa que la lista de los nombres de los archivos a eliminar (no el tamaño de todos los archivos) es mas grande que la memoria buffer disponible del sistema operativo.

Para solucionar esto, una posibilidad es eliminar el directorio completo.

# rm /directorio_de_caches/

Pero en mi caso esto no es viable, ya que este directorio es fundamental para el funcionamiento normal del sitio, y eliminar el directorio y su contenido llevaría algunas horas.

La solución que encontré es eliminar los archivos uno a uno, sería un proceso lento, pero mejor desde el punto de vista de no saturar el servidor o generar caídas en el sitio en cuestión.

Para ello utilizo el siguiente comando:

# for i in ls /directorio_de_caches/*; do rm -v $i -f; done

Y como en mi caso quiero eliminar solo los archivos .jpg, el comando querdaría así:

 #for i in ls /directorio_de_caches/*.jpg; do rm -v $i -f; done

Comparte:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • BarraPunto
  • Bitacoras.com
  • LinkedIn
  • Meneame
  • MySpace
  • Twitter
  • Yahoo! Bookmarks
  • email
  • Live
  • RSS
  • Technorati

Contando archivos de un directorio con PHP

By Luigi Keynes

Muchas veces un sitio puede tener muchos archivos en un directorio y al utilizar un programa FTP el mismo generalmente no muestra mas de 2000 archivos y por ende no sabemos cual es el total de archivos por este medio.

Hay varios comandos para averiguar este número vía ssh, pero no siempre se tiene acceso por esta vía  la cuenta de hosting.

Pero podemos saber este valor usando un pequeño script PHP que escribo a continuación:

<?php
$dire = “pone/el/path/de/carpeta”;
$ds  = opendir($dire);
while (false !== ($nombre_archivo = readdir($ds))) {
   $archivos[] = $nombre_archivo;
}
$total_archivos = count($archivos);
$total = $total_archivos-1;
echo $total;
?>

Subes el script al directorio del cual quieres saber cuantos archivos tiene y pones la dirección web donde quedó el archivo y debería mostrarte el valor esperado.

En la variable “$total” hay un resta que le puse menos 1, y es para no contar el script.

Comparte:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • BarraPunto
  • Bitacoras.com
  • LinkedIn
  • Meneame
  • MySpace
  • Twitter
  • Yahoo! Bookmarks
  • email
  • Live
  • RSS
  • Technorati