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
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.