Para empezar, crearé el script que hará las copias
#vi copia_viernes.shUna vez dentro le indico que quiero registrar todo lo que hace en un fichero log
#!/bin/bash
pathLog="logViernes.log"
echo ----------------------------------------------------------------------- >> $pathLogAhora ya sabemos por nuestro log, cuando fué la ultima copia de seguridad y seguimos en el mismo fichero
echo ---INICIO COPIA SEGURIDAD VIERNES >> $pathLog
date >> $pathLog
echo ----------------------------------------------------------------------- >> $pathLogLo que he hecho aquí es decirle a mi servidor que quiero que busque dentro de mi carpeta de backup/viernes todos los ficheros y los borres, pero que no me borre las carpetas, además le he indicado que borre los ficheros que tengan espacios también. Como tengo copias de todos los días :) -> Seguimos
echo -- Borrando ficheros ------------->>$pathLog
find /media/backup/viernes/ -type f -exec rm -v '{}' \;
echo -- Iniciciando Sincronizacion con /www/netux >> $pathLog
rsync -Rrv /var/www/ /media/backup/viernes/ >> $pathLogAquí he usado rsync ya que para mi es muy rápido para hacer copias de seguridad y versátil, como veis he puesto que también escriba todo lo que está copiando en el log. Para terminar el fichero hago...
echo ----------------------------------------------------------------------- >> $pathLogCon esto, ya hemos terminado con los comandos del script, ahora hay que indicar a crond que ejecute el fichero a medianoche.
echo -- Sincronizacion Terminada >> $pathLog
date >> $pathLog
echo ----------------------------------------------------------------------- >> $pathLog
#crontab -eCon ese comando editamos el fichero crontab, acordaros que el usuario tiene que tener permisos en las carpetas a copiar o todo esto no sirve, yo lo hago con root así me evito problemas de grupos, permisos...
Dentro escribimos lo siguiente
15 0 * * 5 /root/copia_seguridad_viernes.sh
Viene a ser lo mismo de
"A las 24:15 de cualquier dia del mes, de todos los meses y solo el viernes, haz la copia de seguridad"Si quereis cambiar el dia de la semana solo teneis que cambiar el 5 por el dia de la semana que querais, acordaros que el domingo es el 0.
Y ya esta!! Ahora a comer algo, que pensar me da hambre.
1 comentario:
#!/bin/bash
function hacer_hueco () {
cd /media/copia_seguridad/
#copio els fitxers creats anteriorment ordenats del més antic al més nou
ls -c -r copia* > /home/alumneasix/Escritorio/text.txt
#echo "entro en hacer hueco"
#començo a llegir cada línea del fitxer creat i que després
while read line
do
#en el fichero text.txt tengo los ficheros creados anteriormente ordenados del más
antiguo al más nuevo. Elimino los primeros 6 (hasta que me encuentro la copia de todo
(copiaTotal)
#echo $line
#em quedo amb la primera part del nom del fitxer o sigui copiaTotal ó copiaIncremental
tipo=$(echo $line | cut -f1 -d_)
#echo $tipo
if [ $tipo = "copiaTotal" ];then
#echo "/media/copia_seguridad/"$line
rm /media/copia_seguridad/$line
rm /home/alumneasix/Escritorio/text.txt
#esborro el fitxer text.txt i sorto del while amb un break
break
else
#echo "/media/copia_seguridad/"$line
rm /media/copia_seguridad/$line
fi
done < /home/alumneasix/Escritorio/text.txt
}
#script para realizar copias de seguridad
clear
dia_semana=$(date +%w)
fecha_hoy=$(date +%d%b%y)
#echo "1dia de la semana " $dia_semana
if [ $dia_semana -eq 0 ];then
DIRECT=/media/copia_seguridad/copiaTotal_home_$fecha_hoy.tar.bz2
#echo $DIRECT
tar -jcf $DIRECT /home
# 2>/dev/null aixó és perque la comanda tar no mostri cap resultat d'haver-se executat
error_tar=$?
#echo "el error de tar es " $error_tar
if [ $error_tar -eq 2 ];then
rm $DIRECT
hacer_hueco
tar -jcf $DIRECT /home
fi
chown alumneasix:alumneasix $DIRECT
else
#echo "dia de la semana " $(date +%w)
if [ $dia_semana -ne 6 ];then
fecha_ayer=$(date -d'1 day ago' +%d%b%y)
#echo "fecha de ayer " $fecha_ayer
DIRECT=/media/copia_seguridad/
copiaIncremental_home_$fecha_hoy.tar.bz2
tar -jcf $DIRECT /home –N $fecha_ayer
error_tar=$?
#echo "el error de tar es " $error_tar
if [ $error_tar -eq 2 ];then
rm $DIRECT
hacer_hueco
tar -jcf $DIRECT /home –N $fecha_ayer
fi
chown alumneasix:alumneasix $DIRECT
fi
fi
Publicar un comentario