domingo, 5 de mayo de 2013

Script de backup


Buenas a todos,

 todos sabemos lo molesto que es perder información por falla en nuestro pendrive, o en nuestro disco duro, quizás por esto es que se han hecho mas común los servicios en la nube.

También se vuelve molesto y tedioso, cuando estas trabajando en el desarrollo de un nuevo sistema, y tienes que copiar todo el directorio en el pendrive, y luego cuando llegas a la casa, tener que copiar todo el directorio en el equipo de la casa; y después tener que hacer lo mismo pero en sentido inverso.

Bueno esto me estaba pasando recientemente con un proyecto en el que estoy trabajando, hago algunas cosas en la oficina, pero después en la noche, en la comodidad de mi casa, hago otro poco mas, y me parecía muy incomodo tener que copiar los directorios completos y responder las preguntas del sistema "Desea sobrescribir el contenido del escritorio?", es por eso, que dedique un poquito de tiempo, y escribí un script, que me permite, copiar el contenido de mi directorio de trabajo en el directorio que tengo sincronizado con Dropbox, y luego en la casa(u oficina) hacer lo inverso ( de dropbox a mi escritorio de trabajo).

En este script uso por supuesto a nuestro amigo rsync.

Aquí les dejo el código:


#!/bin/bash

diaHora=$(date +"%m-%d-%Y  %T")

ruta=$(pwd)

origen=$1
destino=$2
opciones="-aczuv --stats --delete --no-whole-file --exclude-from=$ruta/exclude-list "

if (($# < 2))
then
    echo "Número de parámetros incompleto. Se esperan dos, el directorio origen y el destino"
else
    if [ ! -d "$origen" ]
    then
        echo "El directorio de origen no existe o es invalido"
        exit
    fi
   
    if [ ! -d "$destino" ]
    then
        echo "El directorio destino no existe o es invalido"
        exit
    fi
   
    echo $diaHora >> log_rsync
    rsync $opciones $origen "$destino" >> log_rsync
fi


Se le pasa por parámetro es la ruta del directorio origen y el directorio destino. Como pueden ver se valida que el número de parámetros sean dos y que los directorios existan. En caso de que se cumpla todo lo anterior,  el comando rsync se ejecuta.

Entre las opciones, incluí una de exclusión, y esto se debe a que no quiero respaldar cosas que no me interesan, aquí les dejo un ejemplo:

*.git
.git/*
cache/*
logs/*


Aquí pueden notar, que no respaldo nada relacionado con git, ni el contenido del directorio cache y logs.

Recuerden, que para que el script pueda funcionar, deben darle permiso de ejecución.

Espero que les sirva de ayuda.

No hay comentarios:

Publicar un comentario