lunes, 30 de junio de 2014

Backups Consola Linux

Si estas administrando un servidor Linux, en mi caso Ubuntu Server, lo normal es que necesites automatizar tareas como por ejemplo las copias de seguridad. Para la automatización de comandos podemos usar Cron que viene instalado en la mayoría de distribuciones Linux.
Para la configuración usaremos el programa crontab que viene con el paquete cron y que nos va a ayudar a programar nuestras tareas de un manera sencilla.
Vamos a hacer un ejemplo para crear copias de seguridad diarias de las carpetas de usuarios -> /home
1.- Editamos crontab desde terminal ejecutando -> sudo crontab -e
nos saldrá una pantalla parcida a la de la imagen en donde incluiremos nuestras líneas de código.
Crontab automatizacion de copias automaticas linux
2.- Introduciremos los comandos indicando cuando queremos que se ejecuten. Para ello crontab tiene un sistema muy sencillo de usar:
Cada linea de este archivo esta formada por 7 columnas
  1. Minutos (de 0 a 59)
  2. Horas (de 0 a 23)
  3. Dia (de 1 a 31)
  4. Mes (de 1 a 12)
  5. Dia de la semana (de 0 a 7, donde 7 suele indicar domingo dependiendo de la configuración del sistema)
  6. usuario (opcional)
  7. orden a ejecutar
En las cinco primeras columnas si indicamos el valor asterísco ‘*’, estaremos diciendo que lo haga en todo el rango de esos valores. Por ejemplo si ponemos esto: 0 4 * * 7 estaríamos diciendo que la tarea se ejecutara a las 4:00, todos los días, todos los messes, los días que sean domingo.
3.- Introducimos nuestro comando: -> 0 2 * * * tar -jcvf /tmp/copiaSeguridadHome.tar.bz2 /home
Con la línea introducida anteriormente tendríamos copias de seguridad todos los días del año a las 2:00 am, del directorio /home y sus subdirectorios en el archivo copiaSeguridadHome.tar.bz2 en el directorio tmp.
4.- Reiniciamos cron para que cargue la nueva configuracion: -> sudo /etc/init.d/cron restart

Backups Bash

Backup utility in Bash Shell Script

save following bash shell script as mybackup.sh
#!/bin/bash

#

# Filename: mybackup.sh

# Author : Simrat Pal Singh

# Email : simrat.khokhar@gmail.com

#

# Modified: 02-03-2011

# to even work with paths having space

#


if [ $# -ne 2 ];then

echo "Wrong number of arguments"

echo "Usage: $0 /path/to/source /path/destination/"

exit 1

fi


input=$1

backupdate=$(date +%d%m%Y)

foldername=$(basename "$1")

inputpath=$(dirname "$1")

outpath="${2}"

output="${2}${foldername}_${backupdate}"


case ${foldername} in

*.tar.bz2)

[ "${inputpath}" = "" ] && inputpath="."i

bzip2 -dck "${inputpath}"/"${foldername}" | tar -C "${outpath}" -x

;;


*)

counter=0

while [ -f "${output}.${counter}.tar.bz2" ]

do

counter=$(expr $counter + 1)

done


output="${output}.${counter}"


# run tar and bzip2 command to make backup

tar -C "${inputpath}" -c "$foldername"|bzip2 -cz >"${output}.tar.bz2"

chmod -x "${output}.tar.bz2"

;;

esac


#--------------------- END ------------------------



execute with two arguments as:
sh mybackup.sh /path/source /path/destination/

it will create 'source_ddmmyyyy.x.tar.bz2' at /path/destination/
where 'x' is integer value, ie if you run it twice on same day for same source folder, it will automatically incremented.

if source folder is .tar.bz2, then it will unzip the contents at the destination path

Backups Sistemas

Extraido de http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=backupLinux



1. Aspectos básicos sobre backup
El término backup se refiere a un concepto de especial importancia en el mundo informático: las copias de seguridad. Suele realizarse una copia de seguridad de aquella información que interesa protegerse frente a posibles pérdidas o borrados accidentales. Puede realizarse una copia de seguridad de la imagen de un sistema, bases de datos, ficheros de aplicación, documentos específicos, etc.
En su versión más sencilla una copia de seguridad, como su propio nombre indica, no es más que un duplicado de cierta información, sin ningún tipo de procesamiento sobre la misma (compresión, etc). Dicho duplicado debe almacenarse en un medio distinto al que se encuentra la información original, ya que si hubiera algún problema sobre el medio donde se encuentra almacenada la información original (rotura, robo, fallo software, etc) el backup realizado no serviría para nada.
Existen diversos tipos de backup que típicamente suelen aplicarse sobre la información relevante. Los principales son:
  • Completo: Consiste en una copia completa de todos los datos principales. Requiere mayor espacio de almacenamiento y ventana de backup.
  • Incremental: Consiste en copiar únicamente aquellos datos que hayan sido modificados respecto a otro backup incremental anterior, o bien, un backup total si éste no existe. Un backup incremental no sustituye a los backup incrementales anteriores. Para restaurar un backup incremental es necesario restaurar el backup completo y todos los backup incrementales por orden cronológico que estén implicados. Si se pierde uno de los backup incrementales, no es posible restaurar una copia exacta de los datos originales.
  • Diferencial: Consiste en copiar únicamente aquellos datos que hayan sido modificados respecto a un backup completo anterior. Requiere menor espacio de almacenamiento y ventana de backup. Para restaurar un backup diferencial es necesario restaurar previamente el backup completo en el que se basa. Por tanto, requiere mayor tiempo de restauración. Un backup diferencial puede sustituir a otro backup diferencial más antiguo sobre el mismo backup completo.
Normalmente se utilizan herramientas que permiten flexibilizar y potenciar el proceso de generación y mantenimiento de copias de seguridad. Dichas herramientas suelen permitir diversas opciones relacionadas con las tareas de backup, tales como:
  • Elección de tipo de backup a realizar.
  • Programación de tareas de backup.
  • Reestablecer información a partir de copias de seguridad.
  • Compresión de la información, optimización del espacio ocupado por las copias de seguridad.
A continuación se mostrará como programar de forma sencilla tareas de backup en un sistema Linux, utilizando recursos compartidos en red como medio de almacenamiento de las copias de seguridad.



2. Configuración del sistema
Para ilustrar una forma sencilla de generar copias de seguridad desde un sistema Linux, se parte de un sistema Linux (Debian) que está conectado en red a una máquina con Windows Server 2003.
El medio de almacenamiento para las copias de seguridad será un disco duro extraible que se conectará mediante usb a la máquina con Windows Server 2003. La forma de compartir en red un recurso en sistemas Windows es muy sencilla: una vez que el sistema reconoce el nuevo medio conectado, basta con pulsar el botón derecho del ratón sobre el medio a compartir, y seleccionar la opción Compartir y seguridad.










En el diálogo emergente seleccionar la opción Compartir esta carpeta. Establecer el nombre deseado para el recurso compartido en el campo Recurso compartido.













Por último, habilitar los permisos para poder escribir sobre este medio. Pulsar el botón Permisos e indicar los permisos pertinentes. Una vez seleccionados los permisos (Control total en este caso, para poder leer y escribir) pulsar el botón Aceptar para finalizar el proceso.










El disco duro extraible conectado a la máquina con Windows Server 2003 ya está compartido en red, y puede ser accedido por la máquina Linux para almacenar las copias de seguridad.
De esta forma, la estructura de conexiones del sistema con el que se trabajará sera la siguiente:










3. Montar la unidad extraible desde Linux
En primer lugar, se procederá a instalar sobre la máquina Linux un cliente de Samba, a fin de poder visualizar los recursos de la máquina Windows accesibles. Para ello se teclea el siguiente comando:
apt-get install smbclient
Una vez instalado el cliente de Samba, se podrán visualizar los recursos de la máquina Windows accesibles por la máquina Linux. Para ello, basta con teclear el siguiente comando:
smbclient -L [IP_MAQUINA_WINDOWS]
En este caso, mostrará el disco extraible que se compartió en red anteriormente.





Para montar via red la unidad extraible de la máquina Windows sobre la máquina Linux, es necesario instalar la herramienta smbfs, invocando el siguiente comando en la máquina Linux:
apt-get install smbfs
Una vez instalada la herramienta smbfs, ya se puede montar el disco extraible de la máquina Windows en la máquina Linux utilizando la red. Antes de invocar el comando correspondiente, debe crearse un directorio en el directorio /mnt donde se montarán los archivos del disco extraible. Para ello, teclear el siguiente comando en la máquina Linux:
mkdir /mnt/iomega
Una vez creado este directorio, ya se puede invocar el comando smbmount para montar el disco extraible conectado a la máquina Windows sobre el directorio /mnt/iomega de la máquina Linux. Ejecutar este comando como se indica a continuación:
smbmount //[IP_MAQUINA_WINDOWS]/extraible /mnt/iomega
A partir de este momento se puede acceder al disco extraible conectado a la máquina Windows desde el directorio /mnt/iomega de la máquina Linux. En este caso, el acceso será necesario para almacenar las copias de seguridad que se procederán a programar.


4. Implementar script para realizar la copia de seguridad
El siguiente paso será realizar un script para que sea invocado por una tarea cron de forma periódica.
La funcionalidad del script es muy sencilla: simplemente debe comprimir los archivos a salvar (por ejemplo, con tar) y copiarlo al medio de almacenamiento elegido (disco extraible del equipo con Windows montado en el directorio /mnt/iomega de la máquina Windows). Por mayor claridad, en el nombre del fichero se especificará la fecha de realización de la copia de seguridad.
En este caso, el script para Linux podría contener la siguiente línea:
tar -cvzf /mnt/iomega/backup/backup-`date +%Y-%m-%d`.tgz /home/alberto
Este comando comprimirá en un fichero de nombre backup-YYYY-MM-DD.tgz el contenido de la carpeta /home/alberto de la máquina Linux. El directorio destino será el directorio de nombre backup de la unidad extraible conectada a la máquina Windows, que se encuentra montada en el directorio /mnt/iomega de la máquina Linux.
Este script se almacenará en el fichero /home/alberto/backup.sh . Este script es el que se invocará desde el proceso de cron que se programará en el apartado siguiente.



5. Automatizar la tarea utilizando Cron
Para automatizar la ejecución de este script periódicamente, se utilizará el cron del sistema Linux. Se programará la ejecución de dicho script todos los jueves a las 0:00. Para establecer esta programación a la lista de tareas del cron se ejecuta el siguiente comando:
crontab -e
En este caso, la máquina Linux con Debian arranca el editor vi para añadir la nueva tarea programada. Se recuerda que la sintaxis de la línea a añadir en este archivo para programar una nueva tarea es:
[hora] [minuto] [dia_del_mes] [mes] [dia_de_la_semana] [comando]
De esta forma, para programar la tarea de backup todos los jueves a las 0:00, la línea a añadir en el archivo abierto por vi con las tareas de cron asociadas al usuario, deberá ser la siguiente:
0 0 * * 4 sh /home/alberto/backup.sh
El símbolo asterísco ( * ) significa que abarcará todos los dias, horas, etc según el campo que se especifique.
En este punto ya se tiene programada una tarea de backup desde la máquina Linux, utilizando como medio de almacenamiento el disco extraible conectado a la maquina Windows (compartido en red). El proceso de backup se resume en el siguiente gráfico:







Para recuperar la información, bastará con descomprimir el archivo de backup deseado utilizando el comando tar en la máquina Linux. Para ello, tomando el fichero de backup generado en el ejemplo del gráfico anterior, podría ejecutarse la siguiente sentencia desde el directorio donde se encuentre:
tar -xvzf backup-2006-04-14.tgz



6. Conclusiones
No debería ser demasiado complicado para cualquier iniciado en Linux, programar una tarea de backup utilizando herramientas básicas del sistema (scripts, cron, etc). Tal vez no es la forma más elegante (existen herramientas especificas), pero el objetivo de este documento en gran parte era ilustrar como pueden resolverse problemas interesantes utilizando las herramientas más básicas ofrecidas por los sistemas Linux.
Es una realidad en informática, el hecho de que muchas veces es importante saber resolver problemas utilizando unos pocos conocimientos sencillos asimilados anteriormente.



7. Fuentes

A continuación puedes evaluarlo:

Anímate y coméntanos lo que pienses sobre este TUTORIAL:
Fecha publicación: 2011-04-22-03:21:47
Autor: jedaro
ALBERTO lo felicito por el contenido del articulo, muy interesante. Puesto que estoy documentandome para realizar copias de seguridad entre maquinas Windows y Linux. Solo me queda una duda, resulta que tengo dos maquinas, un con Linux Debian y la Otra con Windows XP, la información que quiero respaldar se encuentra en la maquina linux, y quiero que la copia quede en la maquina Windows de forma automática y diaria. Yo podría hacer el proceso inverso como lo explicas aquí en el articulo? podria tomar el directorio donde se encuentra la información y compartirla y hacer la tarea programa para que se copie en la maquina Windows?

Gracias
Fecha publicación: 2009-06-17-07:03:56
Autor:
[Leonardo] Resumido, pero muy completo. Gracias.
Fecha publicación: 2006-10-19-02:47:07
Autor:
[roberto] Muy buen articulo, la importancia radica en el procedimiento que realizar el proceso de realizar el respaldo entre dos maquinas diferentes con sistemas operativos diferentes.
Fecha publicación: 2006-07-16-11:43:58
Autor:
[uayeb caballero] la verdad me parese muy buena la informacion
Fecha publicación: 2006-06-07-10:40:43
Autor:
[David] Hey excelente tutorial. Ya está en los marcadores de mi navegador.
Fecha publicación: 2006-05-03-11:44:22
Autor:
[Jose Antonio Prieto] Excelente Manual. Muchas Gracias

----

sin clicks
0 personas han traído clicks a esta página
+
+
+
+
+
+
+
+