Disco Lleno

Discussion in 'Elastix 2.x' started by ReserDj, Dec 13, 2010.

  1. ReserDj

    Joined:
    Sep 23, 2009
    Messages:
    112
    Likes Received:
    0
    Buen dia a todos, este dia traigo una consulta a lo mejor un poco tonta, pero la verdad no hallo que hacer, tengo un servidor elastix, el cual tiene un poco mas de un año trabajando y tiene activada la grabacion de llamadas para todas las extensiones, y hoy el disco esta llegando al limite de su capacidad, por lo que me he dado a la tarea de tratar de borrar grabaciones, primero intente habilitar samba para hacerlo via red, pero por la cantidad de archivos siempre se congela la red, intente por medio del Win SPC y tampoco pude, por lo que recurri a la consola de elastix. ingrese a la ruta /var/spool/asterisk / monitor y ejecute el comando "rm" de la siguiente manera:

    rm -rf *: -bash /bin/rm: Argument list too long.

    por lo que intente hacerlo de esta manera:

    rm -rf *.wav : -bash /bin/rm: Argument list too long.

    luego googleando un poco intente hacer esto otro:

    find ./ -type f -name '*.wav' -exec rm -f {} \;

    en teoria con esto iba a borrar todos los archivos pero no funciono, y necesito vaciar el disco por que tarde o temprano este se va a llenar, y no encuentro otra manera de hacer este proceso, si alguien ha tenido este problema y sabe como solucionarlo le agradezco de antemano.
     
  2. ReserDj

    Joined:
    Sep 23, 2009
    Messages:
    112
    Likes Received:
    0
    Buenos señores, luego de googlear un buen rato y probar muchas opciones que encontre, nada mas comparto con ustedes el metodo que me sirvio para eliminar mas de 932,000 grabaciones de mi elastix, el cual al estar con el disco duro casi lleno se empezo a comportar de manera muy extraña tornandose inestable y con problemas para llamar, el metodo que me funciono es el siguiente:


    esto se debe ejecutar en el directorio \var\spool\asterisk\monitor

    Si sólo daba el comando
    rm -rfv . *.wav

    para borrar todos los archivos wav dentro de la carpeta me tiraba el siguiente resultado:

    listado de argumentos demasiado largo

    así que me puse a preguntarle al tio Google con la siguiente y maravillosa solución

    find . -name '*wav' | xargs rm

    tararaaaaaaan!!!!

    donde:

    1. find es el comando para encontrar ciertos archivos,
    2. "." es el lugar donde buscará, en este caso es en el directorio actual pero puede ser cualquier otro como ~/ o /home/pato/documentos, etc
    3. -name es la opcion que nos da find para dar el nombre base del archivo
    4. ‘*wav’ usando el comodin * para localizar los archivos con terminación wav
    5. | que envía la salida del comando find a la entrada del comando que viene a continuación
    6. xargs toma la lista que resulta de find y la pasa como llamadas consecutivas a rm
    7. rm borra
    8. -v (verbose) opcion de rm que explica lo que va haciendo (este es opcional ya que yo no lo utilice e igual borro toda la informacion), solo basta armarse de paciencia, por que se tarda un par de horas en hacerlo pero realmente funciona.

    un metodo muy bien explicado al menos para mi que necesitaba algo bien practico pero que supiera lo que estaba haciendo, pero ojo que el uso del comando rm puede ser muy peligroso, espero sea de utilidad.
     
  3. rafael

    Joined:
    May 14, 2007
    Messages:
    1,454
    Likes Received:
    1
    muchas gracias por compartir la solución :) +1 a tu karma

    Saludos,

    Rafael
     
  4. Gelevera

    Joined:
    Aug 22, 2010
    Messages:
    143
    Likes Received:
    0
    Hola a todos.
    yo tengo un problema parecido. No es disco lleno, sino que lo que se llena es la cantidad de nombres que soporta la carpeta.
    Lei por ahi que es un problema de la particion ext3 que soporta cierta cantidad de nombres de archivos por directorio. :angry:

    Lo que hice fue:
    -ir a la carpeta donde esta monitor:
    cd /var/spool/asterisk/

    - cambiarle el nombre a la carpeta
    mv monitor monitor_la_fecha_backup

    - cree un nuevo directorio con el nombre "monitor"
    mk dir monitor

    - Y le di los permisos a asterisk
    chown asterisk monitor (cambia el dueño del archivo " monitor" a asterisk)
    chgrp asterisk monitor (pone a monitor en el grupo asterisk)
    chmod ug+rw monitor (le da permisos al (u)usuario y al (g)grupo, de lectura(r) y de escritura(w)

    esto es manual. podria automatizarlo con cron. pero me trajo el problema de que despues, en la interface web de elastix, no tengo el link para descargar o escuchar los archivos nuevos (y obvio que tampoco los viejos por que los cambie de directorio). :angry:

    Pero me gustaria que asterisk grabara los audios en sub-carpetas algo asi como:

    Code:
    monitor
       -año
         -mes
           -fecha  archivo_de_audio
    
    Alguna idea? :)
    gracias de antemano..
     
  5. Gelevera

    Joined:
    Aug 22, 2010
    Messages:
    143
    Likes Received:
    0
    la verdad que el que busca encuentra.
    aca esta lo que necesitaba

    grabar los archivos ordenados en sub-carpetas - limite de # de nombres en particiones ext3


    En Elastix no viene por default.
    que raro que a la hora de asignar donde grabar los de asterisk no se les haya ocurrido este problema de la ext3..
    Podria agregarse a Elastix y también una opción para borrar las muy antiguas.


    Bueno con esto:
    Code:
    find . -name '*wav' | xargs rm
    borramos los archivos .wav dentro de ese directorio.

    Pero si lo que quiero es borrar, nose, una carpeta antigua? o recursivamente?
    -R?

    Ahora que guardo las grabaciones por sub-carpetas, quiero poder borrar las de mas de 1 año de antiguedad..
     
  6. Gelevera

    Joined:
    Aug 22, 2010
    Messages:
    143
    Likes Received:
    0
    Y asi borre archivo con fecha antes de..



    Code:
    
    cd /var/spool/asterisk/monitor
    
    
    touch -d "11 jan 2011 00:00:00" date_marker | find . -newer date_marker -name '*.gsm'| xargs rm -v
    
    
     
  7. dicko

    Joined:
    Oct 24, 2008
    Messages:
    4,099
    Likes Received:
    0
    o, para la eficiencia:-


    find /var/spool/asterisk/monitor/*.gsm -mtime +365 -delete
     
  8. Gelevera

    Joined:
    Aug 22, 2010
    Messages:
    143
    Likes Received:
    0
    Grax dicko por la correccion. soy autodidacta y no se mucho de comandos de linux. asi que busqué info de comandos sus opciones y arme eso..
    Tambien recordá que ahora tengo las grabaciones en sub-carpetas por año, mes y fecha. por defecto find busca recursivamente, no?


    Y para agregarlo al cron una vez por mes??

    crontab -e

    Code:
    0 0 1 1-12 *  find /var/spool/asterisk/monitor/*.gsm -mtime +365 -delete
    
    o hay que ponerlo en un scrip?
     
  9. dicko

    Joined:
    Oct 24, 2008
    Messages:
    4,099
    Likes Received:
    0
    Yo también soy autodidacta. Linux no es una "forma correcta" hay cientos de formas, me alegro de que está aprendiendo.

    Por recursión, aislar el nombre de la estructura de directorios inmediata: -


    0 0 1 1-12 * find /var/spool/asterisk/monitor/ -name "*.gsm" -mtime +365 -delete

    ++karma Gelevera

    regards

    dicko
     
  10. Gelevera

    Joined:
    Aug 22, 2010
    Messages:
    143
    Likes Received:
    0
    La verdad que el editor Vi es muy confuso, asi que pongo cada paso..


    Code:
    crontab -e  
    (Para editar con Vi)

    Code:
    i   
    (para insertar texto)

    Code:
    0 0 1 1-12 * find /var/spool/asterisk/monitor/ -name "*.gsm" -mtime +365 -delete 
    (Para que borre los archivos de mas de 1 año)


    Code:
    ZZ  
    (En mayúscula. Para guardar y salir)
     

Share This Page