Script Para Respaldar Las Aplicaciones


Ir a la página 1, 2  Siguiente

Objetivo: Script Para Respaldar Las Aplicaciones
Hola a todos.
Debido al post de Shordi sobre un script bash que el hizo para hacer backups de sus programas gambas.
Me quedo picando la curiosidad por aquello de que cada vez que se hacia el backup se copiaban todos los proyectos, aunque no tengan cambios. Esto presenta el problrma de aumentar el uso de espacio de disco, creo, innecesariamente.
Asi que me puse a jugar unas horas con bash ya que hacia tiempo que no tocaba ese lenguaje.

Bueno he logrado hacer lo que me propuse, el script hace lo siguiente:
Verifica cual es el ultimo backup.
Luego verifica la fecha de cada proyecto y si es posterior al bacup entonces lo pone en en el .tar.gz caso contrario no lo pone.

El resultado es una serie de archivos .tar.gz donde el primero que se realice contendra todos los proyectos y luego cada nuevo .tar.gz tendra solo lo que hayamos cambiado luego del ultimo backup.

espero que les sea de utilidad.
#!/bin/bash
prdir="/directoriodetrabajo/"
bkdir="/directorioderespaldo/"
# Busqueda del ultimo backup
lastbk=`date -d"1970-01-01 00:00:00" +%Y%m%d%H%M%S`
for bkfile in $(ls -f ${bkdir}/*)
do
tdate1=`stat -c %y ${bkfile}`
tdate2=`date -d"${tdate1}" +%Y%m%d%H%M%S`
echo "Date 2 "$tdate2
if [ $tdate2 -gt $lastbk ]; then
echo $tdate2
lastbk=$tdate2
fi
done
echo "Fecha del ultimo backup "$lastbk
bdir=$(basename "$sdir")
mdate=`date +%Y%m%d%H%M%S`
mzip="$mdate.tar.gz"
mtar="$mdate.tar"
# Creación de un tar vacio
tar cfT $bkdir$mtar /dev/null
cd $prdir
for sdir in $(ls -d ${prdir}*/)
do
# Busqueda de la fecha mas reciende dentro del proyecto
process="NEUTRO"
bdir=$(basename "$sdir")
flast1=`find ${sdir} -type f -printf '%TY-%Tm-%Td %TH:%TM:%TS %p\n'| sort -n | tail -1 | cut -f1 -d"."`
echo "1) La fecha mas reciente en "$bdir" es "$flast1
flast2=`date -d "${flast1}" +%Y%m%d%H%M%S`
echo "2) La fecha mas reciente en "$bdir" es "$flast2
if [ $flast2 -gt $lastbk ]; then
process="RESPALDAR"
else
process="OMITIR"
fi
echo "3) La acción para el proyecto "$bdir" es " $process
if [ "$process" = "RESPALDAR" ]; then
bdir=$(basename "$sdir")
echo $bdir" tiene cambios"
echo "4) Empaquetando "$bdir
tar -r -f $bkdir$mtar $bdir/
else
echo "4) Omitiendo "$bdir
fi
done
gzip $bkdir$mtar
/usr/bin/gambas3 &
exit


Saludos.

Perfil MP  
Objetivo: Re: Script Para Respaldar Las Aplicaciones
Muy bueno.

Perfil MP  
Objetivo: Re: Script Para Respaldar Las Aplicaciones
Una sugerencia: Antes de hacer el backup de cada día, haz una lista de las carpetas incluídas y grábala en un fichero.txt, o como lo prefieras, con el mismo nombre del backup. Tar tiene una opción para listar su contenido, si no recuerdo mal...

Es que si tienes que recuperar la última copia de un proyecto, nunca sabes en qué tar.gz estará y te tocará ir mirando de uno en uno... lo que puede ser arduo si hace mucho tiempo desde que no se modificaba ese proyecto.

Saludos

Perfil MP  
Objetivo: Re: Script Para Respaldar Las Aplicaciones
shordi escribió: [Ver mensaje]
...Es que si tienes que recuperar la última copia de un proyecto, nunca sabes en qué tar.gz estará y te tocará ir mirando de uno en uno... lo que puede ser arduo si hace mucho tiempo desde que no se modificaba ese proyecto...

Si, es verdad.
A ver si comprendo lo que propones.
Para que sea mas fácil encontrar un backup hay que crear un .txt donde se registre cada proyecto y en que tar.gz esta localizado el último backup de este.
¿Algo así?
konvertilo:20170510112013.tar.gz
tradukisto:20170509123345.tar.gz
...

Saludos.

Perfil MP  
Objetivo: Re: Script Para Respaldar Las Aplicaciones
Exacto. Cómo hacerlo sólo con un shell script... Habría que mirarlo.

Perfil MP  
Objetivo: Re: Script Para Respaldar Las Aplicaciones
shordi escribió: [Ver mensaje]
Exacto. Cómo hacerlo sólo con un shell script... Habría que mirarlo.

Sabes como se hacen matrices o colecciones en bash?

Saludos.

Perfil MP  
Objetivo: Re: Script Para Respaldar Las Aplicaciones
Citar:

Sabes como se hacen matrices o colecciones en bash?

Pues ni idea... para esos tejemanejes siempre recurro a gambas...

Se me ocurre que una línea de trabajo sería generar un listado de lo que hay en el archivo comprimido y comparar ese resultado con el del fichero de texto índice con alguno de los comandos de comparación de archivos, diff o alguno así...

O, hacer un programita de gambas que solucione el tema ¿por qué no?

Saludos.

Perfil MP  
Objetivo: Re: Script Para Respaldar Las Aplicaciones
[quote user="shordi" post="38088"]
Citar:
...O, hacer un programita de gambas que solucione el tema ¿por qué no?

Bueno, la verdad es que me intereso el tema así que ayer por la noche comencé un nuevo proyecto en gambas para gestionar los backups y hacer restauraciones y que trabaje en conjunto con el script.
Ya comentare en cuanto tenga algo funcional.

Saludos.

Perfil MP  
Objetivo: Re: Script Para Respaldar Las Aplicaciones
¿Y por qué no usar rsync?

Con rsync puedes elegir hacer copias completas, incrementales o sólo copiar los ficheros que hayan cambiado... Hay miles de ejemplos en la web de formas de usarlo.

Saludos

Perfil MP  
Objetivo: Re: Script Para Respaldar Las Aplicaciones
jguardon escribió: [Ver mensaje]
¿Y por qué no usar rsync?
Con rsync puedes elegir hacer copias completas, incrementales o sólo copiar los ficheros que hayan cambiado... Hay miles de ejemplos en la web de formas de usarlo.
Saludos

Le eche on vistazo a algunos ejemplos de rsync eb el sitio este:
https://www.tecmint.com/rsync-local...ation-commands/
Esta interesante, creo que es mucho mas eficiente que todo los de los .tar.gz pero no me queda en claro si puedo tener la opción de guardar versiones a lo largo del tiempo o siempre guarda lo ultimo, lo cual seria un poco complicado en caso de cometer un erro en el original y que la "copia" finalmente tenga el error también (en caso de usar cron)

Bueno tendré que hacer pruebas para familiarizarme.

Saludos.

Perfil MP  
Ir a la página 1, 2  Siguiente

Página 1 de 2


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.1027s (PHP: 45% SQL: 55%)
Consultas SQL: 19 - Debug off - GZIP Activado