A mis visitantes

Bueno deciros que este blog lo puse por que me hacia falta a mi ya que tengo un modulo de memoria parciamente estropeado y olvido muchas cosas, si crees que algo de aqui te ayudara en alguna configuracion pues usalo sin problemas, tambien deciros que si dejais comentarios os respondere lo mas prontito que pueda.

Un saludo y gracias por su visita ;)

jueves, 28 de julio de 2011

Copias de seguridad en ubuntu

Son las 24:58 y no tengo sueño así que voy a hacer un sencillo script de copias de seguridad con crontab.

Para empezar, crearé el script que hará las copias

#vi copia_viernes.sh
Una vez dentro le indico que quiero registrar todo lo que hace en un fichero log
#!/bin/bash

pathLog="logViernes.log"
echo ----------------------------------------------------------------------- >> $pathLog

echo ---INICIO COPIA SEGURIDAD VIERNES >> $pathLog

date >> $pathLog  
Ahora ya sabemos por nuestro log, cuando fué la ultima copia de seguridad y seguimos en el mismo fichero
echo ----------------------------------------------------------------------- >> $pathLog
echo -- Borrando ficheros ------------->>$pathLog

find /media/backup/viernes/ -type f -exec rm -v '{}' \;
Lo 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 -- Iniciciando Sincronizacion con /www/netux >> $pathLog

rsync -Rrv /var/www/  /media/backup/viernes/  >> $pathLog
Aquí 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 ----------------------------------------------------------------------- >> $pathLog

echo -- Sincronizacion Terminada >> $pathLog

date >> $pathLog

echo ----------------------------------------------------------------------- >> $pathLog
 Con esto, ya hemos terminado con los comandos del script, ahora hay que indicar a crond que ejecute el fichero a medianoche.
#crontab -e
Con 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:

Anónimo dijo...

#!/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