Script basico para realizar backup

bashSabeis, le estoy empezando a cojer el gustito a hacer mis propios scripts asi simples de las 4 cosas que uno necesita, asi a la par que aprendemos aligeramos el sistema porque claro está que en el 99.99% de los casos un script suele necesitar de menos recursos que cualquier aplicación, por pequeña que esta sea. Pero todo tiene un precio, hay que escribirlo y adaptarlo, si lo hago yo, creedme que lo hace cualquiera.

Vamos a intentar hacer un script que nos sirva de forma muy simple para hacer copias de seguridad de alguna carpeta en concreto en otro disco duro. Como digo en el titulo de la entrada, va a ser muy simple, lo más simple que te puedas encontrar, pero se trata de hacer nuestro primer script, seguro nos da alegría si lo logramos hacer funcionar 🙂 .

Lo que haremos será básicamente copiar una carpeta de nuestro sistema a un disco duro secundario en mi caso, pero puede ser un disco duro externo, o una carpeta compartida como dropbox que almacene nuestros datos en la nube, en otra maquina por ssh etc…..

Lo primero que tendremos que hacer será instalar rsync ya que nos servira para sincronizar ambas carpetas copiando solo los cambios, asi nos evitamos tener montones de copias y tener que hacer todo el proceso en cada una de ellas.

En debian y derivados

sudo apt-get install rsync

En ArchLinux y derivados

sudo pacman -S rsync

Vamos a ver el script

#!/bin/bash
#Script simple de backup por dmaciasblog

#variable de la carpeta que queremos respaldar
respaldo=/home/TU_USUARIO/TU_CARPETA

#variable de la ruta de destino donde guardaremos la copia de seguridad
destino=/RUTA/ENVIO/COPIA

#comando de copia con rsync
rsync -avz –delete -u –no-whole-file ${respaldo} ${destino}

#comentario tontajo al finalizar el comando jajaja
echo "FINNNN!!!! la copia se ha terminado"

Lógicamente tenemos que cambiar lo que tenemos en mayusculas por nuestros datos concretos a los que queremos hace backup.

Luego de editarlo con nuestros datos lo guardamos con extensión .sh, backup.sh lo guarde yo y le damos permisos de ejecución

chmod +x backup.sh

y lo tenemos listo para usarlo con un golpezazo de teclado

./backup.sh

Tambien decir que podeis ampliarlo facilmente para copiar multiples carpetas de este modo

#!/bin/bash
#Script simple de backup por dmaciasblog

#variable de la carpeta que queremos respaldar
respaldo=/home/TU_USUARIO/TU_CARPETA
respaldo1=/home/TU_USUARIO/.amule
respaldo2=/home/TU_USUARIO/.wine
respaldo3=/home/TU_USUARIO/imagenes

#variable de la ruta de destino donde guardaremos la copia de seguridad
destino=/RUTA/ENVIO/COPIA

#comando de copia con rsync
rsync -avz –delete -u –no-whole-file ${respaldo} ${respaldo1} ${respaldo2} ${respaldo3} ${destino}

#comentario tontajo al finalizar el comando jajaja
echo "FINNNN!!!! la copia se ha terminado"

Asi ya tendriamos backup de nuestras imagenes, la configuracion de amule, de wine y de TU_CARPETA 🙂 .

En una proxima entrada veremos como automatizar este script para que lo lance 1 dia a la semana por ejemplo, así tendremos un backup actualizado y si rompemos algo las perdidas seran mínimas.

Como siempre podemos abtener mucha mas info haciendo man rsync

Cualquier duda pues a los comentarios

5 comentarios:

  1. Pingback: Bitacoras.com

  2. Justo hoy tengo un parcial y necesito presentar un script en linux centos, espero me salga esto :D. Se agradece!

  3. Espero que te sirva, y que te funcione 🙂 .
    Como digo, es lo más básico que se despacha en script, podrias ampliarlo de mil formas, pero funcionar, funciona.

    Un saludo

  4. Y si colocas un for y manejas las variables respaldo con ese for, donde el numero final será igual al numero de carpetas a respaldar.

    Dentro del for en vez de colocar el rsync yo colocaría un tar cpzf.

  5. Si me pones un ejemplo para que yo vea te digo. Yo realmente apenas se de esto, solo lo poco que voy leyendo de por aquí y por allí y la verdad que solo me hice e investigue conforme me iba haciendo falta.
    Como ya te digo no domino mucho esto, pero el poner el rsync en vez de empaquetar era por que no tuviera que escribir el archivo completo de cada vez, pero si me equivoco me lo dices.

    Un saludo 😉

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.