Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Portada » Foros Linux » Administración del sistema » Redes y Servidores


Nuevo tema Responder al tema
 [ 4 mensajes ] 
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Menor
Forista Menor
Avatar de Usuario

Registrado: Sab Feb 03, 2007 8:00 am
Mensajes: 53

Nota Publicado: Jue Feb 10, 2011 12:12 pm 
Arriba  
Buenas,

Queria compartir con vosotros este script que he tenido que hacer en el trabajo. Supongamos que tenemos un cron que hace copias de seguridad de algo en una carpeta, y que se van acumulando las copias. Puede que nos interese que las copias que tengan más de por ejemplo 3 meses sean borradas para no ocupar espacio tontamente.

Este script lo que hace es dejar N archivos más recientes en una carpeta, el resto los borra. N lo podemos indicar nosotros, la sintaxis del script es:

borrar_sobrantes.sh 10 /media/backups/cron/

Y dejaria los 10 archivos más recientes que se hallen en la carpeta " /media/backups/cron/"

El script en cuestión es este:

borrar_sobrantes.sh
Código:
#!/bin/sh
# Este script nos permite dejar el numero de archivos que se le indiquen en una carpeta conservando los que sean m? nuevos, el resto seran eliminados.

#comprobamos que se le hayan pasado 2 parametros al script
if [ $# -eq 2 ]; then

        num_max_archivos=$1 #El numero m?imo de archivos que se van a conservar en la carpeta
        carpeta=$2 #La carpeta en la que se van a borrar los archivos sobrantes

        if [ -d $carpeta ]; then

                total_archivos=`ls $carpeta|grep "" -c`

                #comprobamos que $total_archivos sea mayor que $num_max_archivos para borrar los sobrantes
                if [ $total_archivos -gt $num_max_archivos ]; then

                        resta=`expr $total_archivos - $num_max_archivos`
                        for i in `ls -t $carpeta|tail -n $resta`;
                        do
                                echo Borrando "$carpeta$i";
                                rm -rf "$carpeta$i"
                        done
                else
                        echo El numero maximo de archivos es $num_max_archivos y es menor o igual que el total de archivos que hay en esta carpeta $total_archivos.
                fi
        else
                echo La carpeta $carpeta no existe.
        fi
else
        echo La sintaxis de este comando es la siguiente:
        echo borrar_sobrantes.sh [num_max_archivos] [ruta_donde_estan_los_archivos]
        echo
        echo Ejemplo:
        echo borrar_sobrantes.sh 4 /media/backups/cron/
fi


Espero que os sea útil 8) Saludos!

_________________
Slackware 12.1
Ubuntu server 10.10 + KDE
Portatil Dell Inspiron 1525

 Perfil  

Desconectado
Forista Ancestral
Forista Ancestral
Avatar de Usuario

Registrado: Jue Abr 12, 2007 7:00 am
Mensajes: 9186
Ubicación: tras la pantalla (...)

Nota Publicado: Jue Feb 10, 2011 12:49 pm 
Arriba  
interesante. aunque yo le aniadiria algun tipo de filtrado por xetension. no vaya a ser, que uno guarde en el mismo directorio, por ejemplo, logs de X e Y programas, y que quiera dejar solo los 10 mas recientes de cada uno. con tu script, aun especificando 20, no tienes garantias de que vaya a dejar 10 de cada programa... (nota: asumo que el log de cada programa tiene una extension distinta... :? )

no seria dificil. tan solo un tercer parametro.

por cierto... aun sin el filtrado por extension, una opcion "quiza mas elegante" es tirar de find. en serio, simplifica mucho todo lo demas.

PD: asumo que lo has puesto aqui para que opinemos... de ahi que te de mis opiniones. :D

_________________
#446716
>>"Linux: the operating system with a CLUE... Command Line User Environment".
(seen in a posting in comp.software.testing)

[ DNFD ] - [ F4A ] - [ dotfiles ]

 Perfil WWW  

Desconectado
Forista Menor
Forista Menor
Avatar de Usuario

Registrado: Sab Feb 03, 2007 8:00 am
Mensajes: 53

Nota Publicado: Jue Feb 10, 2011 2:12 pm 
Arriba  
Hola niky45!

Gracias por contestar tan rápido! Si, lo he puesto para ver vuestros puntos de vista y que deis vuestras opiniones jeje :D

La cosa la tengo montada de manera en un ordenador que solo hace copias de seguridad de un servidor y que tiene varios cron con scripts que guardan cada copia de cada cosa que me interesa (mysql, vhosts, y correos) en una carpeta diferente y se complementan con el borrar_sobrantes.sh


El cron seria en el caso de mysql este:
0 6 * * * usuario /home/usuario/Robot/scripts/copia_mysql_servidor.sh


Y este el script copia_mysql_servidor.sh

Código:
#!/bin/bash

echo
echo Se guarda el backup en la carpeta /home/usuario/backups/copias_mysql/

scp -P 42734 usuario@XX.XX.XX.XX:/home/backups/copias_mysql/mysql_$(date +"%dx%mx%Y").tar.bz2 /home/backups/copias_mysql/mysql_$(date +"%dx%mx%Y").tar.bz2

echo
echo Borrando copias de seguridad mas antiguas....
/home/usuario/Robot/scripts/borrar_sobrantes.sh 200 /home/usuario/backups/copias_mysql/

echo Proceso completado!!


De manera que en esa carpeta acabo teniendo montones de copias de mysql y el borrar_sobrantes.sh me las mantiene en max 200 :)

Saludos!

_________________
Slackware 12.1
Ubuntu server 10.10 + KDE
Portatil Dell Inspiron 1525

 Perfil  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Jul 20, 2005 7:00 am
Mensajes: 3866
Ubicación: /home/Peru/Lima/La Molina

Nota Publicado: Sab Feb 12, 2011 1:36 am 
Arriba  
podrias usar "read" para capturar algunos valores sin la necesidad de ingresarlos por consola.
El fin de semana lo pruebo, me parece interesante

Saludos y buen trabajo

_________________
"Quiero cambiar al mundo pero no me dan los RPM"
----------------------------
Tony Blair
Linux User # 433253
Ubuntu User # 9562
-----------------------------

 Perfil WWW  
Mostrar mensajes previos:  Ordenar por  
 [ 4 mensajes ] 
Nuevo tema Responder al tema

Saltar a:  


 Temas relacionados   Autor   Respuestas   Vistas   Último mensaje 
aplicacion para copias de seguridad

[ Ir a página: 1, 2 ]

en Software

jony127

22

3373

Jue Oct 20, 2011 1:50 pm

EnriqueK Ver último mensaje

Tutorial - Copias de seguridad en GNU/Linux

[ Ir a página: 1, 2 ]

en Documentación

tonydiaz

24

8088

Sab Dic 21, 2013 12:58 am

cuentos Ver último mensaje

Algunas dudas con TAR para hacer copias de seguridad

en Sistema

lk2_89

0

503

Mar Oct 06, 2015 6:19 pm

lk2_89 Ver último mensaje

Script para controlar los inicios de sesión

[ Ir a página: 1, 2 ]

en Sistema

davius

23

2742

Mié Jun 09, 2010 8:50 pm

niky45 Ver último mensaje

Problema en ubuntu con la rotacion del monitor

en Hardware

lucasemilio

1

819

Jue Jul 22, 2010 2:10 am

hazaam Ver último mensaje



¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC + 1 hora [ DST ]
Traducción al español por Huan Manwë
phpBB SEO