Cursos Servidores con Centos 6
Sistema Operativo ALDOS
Dezoft

Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

 Índice > Todo acerca de Linux > Programas y Aplicaciones Nuevo tema Publicar Respuesta
 Script de backup mejorarlo
Tema anterior Tema siguiente
   
javsolis3
Publicado en 10/09/12 02:49 (Leído 11111 veces)  

Nuevo
Forum User

Inscrito: 30/08/12 Publicaciones: 7
bueno antes que todo quiro darle las gracias a tdos los miembros de este foro soy un usuario linux más y en mi agradecimiento me gustaria aportar este script para hacer backup de una forma sencilla ahora para que el script tenga mejor forma me gustaria hacerle algunas mejoras les explico:

BASH Formatted Code
#!/bin/bash
echo "Empesar el Backup"

            BUS='/home/javier/javier/javier/Cursos/*'
            COL='/tmp/Backups/'
            FECH=xxx_$(date +%d%b%y).tgz
            tar -czvf $COL$FECH $BUS
echo "Terminado el Backup con exito"
 


este script lo guarde en el /bin para llamarlo desde cualquier parte ahora amigos hay algo y me gustaria mejorarlo cuando en guarda o hace el backup guardar todas las carpetas por ejemplo '/home/javier/javier/javier/Cursos/*' y yo solamente quiero que guarde la ultima ejemplo cursos. Por otro lado corro el script y me envia el siguiente mensaje tar: Eliminando la `/' inicial de los nombres bueno pero hace el backup me gustaria ver la forma de quitarlo por mi parte sigo googleando.
 
Perfil
 Citar
Will Lpz Jimnz
Publicado en 29/12/12 07:47  

Admin
Site Admin

Inscrito: 19/02/07 Publicaciones: 180
País:Mexico
Quote by: javsolis3


este script lo guarde en el /bin para llamarlo desde cualquier parte ahora amigos hay algo y me gustaria mejorarlo cuando en guarda o hace el backup guardar todas las carpetas por ejemplo '/home/javier/javier/javier/Cursos/*' y yo solamente quiero que guarde la ultima ejemplo cursos.



Prueba con ...

BASH Formatted Code
#!/bin/bash
echo "Empesar el Backup"

            BUS='/home/javier/javier/javier'
            COL='/tmp/Backups'
            FECH=xxx_$(date +%d%b%y).tgz
            cd $BUS
            tar -czvf $COL/$FECH Cursos
echo "Terminado el Backup con exito"
 


Saludos !! .. Sr. verde

.:: Cuando el Alumno esta listo, el maestro aparece ::. [[http://koalasoft.wordpress.com ::BLog::]]
 
Perfil Sitio Web
 Citar
John J. Toro A.
Publicado en 02/01/13 06:37  

Moderador
Forum User

Inscrito: 19/02/07 Publicaciones: 119
País:Medellín - Colombia
Cordial saludo,

Aunque el requerimiento del post puede ser simple, quiero dar un ejemplo que puede ser practico para una red local.

Tener un backup dentro de la misma maquina es un riesgo alto, igualmente el contar con solo una única opción de recuperación.

Qué pasa si falla el disco?
Que pasa si necesito recuperar un archivo dañado que ya fue respaldado ?
Que pasa si hay un incendio/terremoto/robo/etc. que afecte los equipos de tu red ?

Con esto se aclara que existen múltiples posibilidades de contingencias antes las cuales deberíamos estar preparados y contar con una forma de recuperación.

Por esto se debe establecer una política de copias de seguridad que nos de la posibilidad de recuperar copias de diferentes periodos de tiempo, que sean externas a la maquina y contar con lo menos con una copia almacenada en una ubicación diferente... por decir lo menos.

Aclarando que existen herramientas que facilitan esta tarea, así como hardware especializado para esto, puedo decir que también podemos valernos de los recursos disponibles para lograrlo.

Actualmente las estaciones de la red cuentan con buenas capacidades de disco, que nos pueden servir para almacenar múltiples copias de seguridad. Discos externos USB son un buena opción para tener copias externas.

En este ejemplo se seleccionaron 6 estaciones de la red para hacer un respaldo diario (lunes a Sábado) y una maquina remota accesible desde Internet, a las cuales se tiene acceso desde el servidor mediante ssh (ademas de otras copias). El respaldo se realza automáticamente mediante un script ejecutado mediante cron.

/etc/crontab:
PHP Formatted Code
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
# !!!! Lineas Adicionadas por NewRoute
# M H D M DS
# Todos los Dias cada seis horas a los 30 minutos
30 */6 * * * root /root/cron/backup-mail.sh > /var/www/intranet/sistemas/log/back_sm.html 2>&1
# De Lunes a Viernes de 8 AM a 5 PM cada hora
0 8-17 * * 1-5 root /root/cron/backup.sh > /var/www/intranet/sistemas/log/back_sd.html 2>&1
# Sabados de 8 AM a 12 M cada hora
0 8-12 * * 6 root /root/cron/backup.sh > /var/www/intranet/sistemas/log/back_sd.html 2>&1
# Todos los Lunes a las 6 PM
0 18 * * 1 root /root/cron/dbackup.sh 1 >> /var/www/intranet/sistemas/log/back_d.html 2>&1
# Todos los Martes a las 6 PM
0 18 * * 2 root /root/cron/dbackup.sh 2 >> /var/www/intranet/sistemas/log/back_d.html 2>&1
# Todos los Miercoles a las 6 PM
0 18 * * 3 root /root/cron/dbackup.sh 3 >> /var/www/intranet/sistemas/log/back_d.html 2>&1
# Todos los Jueves a las 6 PM
0 18 * * 4 root /root/cron/dbackup.sh 4 >> /var/www/intranet/sistemas/log/back_d.html 2>&1
# Todos los Viernes a las 6 PM
0 18 * * 5 root /root/cron/dbackup.sh 5 >> /var/www/intranet/sistemas/log/back_d.html 2>&1
# Todos los Sabado a las 12 M
0 12 * * 6 root /root/cron/dbackup.sh 6 >> /var/www/intranet/sistemas/log/back_d.html 2>&1
# Todos los dias (Lunes-Sabado) a las 9:45 AM
45 9 * * 1-6 root /root/cron/dbackup.sh E > /var/www/intranet/sistemas/log/back_e.html 2>&1
# Todos los 1 de cada Mes a las 8:15 AM
15 8 1 * * root /root/cron/dbackup.sh M > /var/www/intranet/sistemas/log/back_m.html 2>&1
# !!!! Fin Lineas Adicionadas por NewRoute

La salida de los scripts son almacenados en archivos HTML, que son accesibles desde una intanet.

/root/cron/dbackup.sh
PHP Formatted Code
#!/bin/sh
SPRM=\-e" "
SKEY='ssh -i /root/cron/servidor-rsync-key'
BUSR="root@"
BPTH="/share/backup"
BSPC=' '
BEXC=' '
case $1 in
1)
BDSC="Lunes";
BCMP="estacion-1:"
;;
2)
BDSC="Martes";
BCMP="estacion-2:";
# BEXC="--exclude .recycle "
;;
3)
BDSC="Miercoles";
BCMP="estacion-3:"
;;
4)
BDSC="Jueves";
BCMP="estacion-4:"
BEXC="--exclude .recycle "
;;
5)
BDSC="Viernes"
BCMP="estacion-5:"
;;
6)
BDSC="Sabado";
BCMP="estacion-6:"
;;
E)
BDSC="Externo";
BCMP="estacion-7:"
BEXC="--exclude .recycle "
;;
M)
BDSC="Mensual";
BCMP="estacion-8:"
;;
O)
SPRM='';
SKEY='';
BUSR='';
BPTH='/backup';
BDSC='Removible';
BCMP='/media/O'
BEXC="--exclude .recycle "
;;
P)
SPRM=''
SKEY=''
BUSR=''
BPTH="/backup"
BDSC="Removible";
BCMP="/media/P";
BEXC="--exclude .recycle "
;;
*)
exit
;;
esac
echo \<table\>
echo \<caption\>Backup: $BDSC - En: $BCMP\</caption\>
echo \<tr\>\<th\>Inicio:\</th\>\<td\>`date`\</td\>\</tr\>
echo \<tr\>\<th\>Mensajes:\</th\>\<td\>\<pre\>
echo \<b\>Informacion Corporativa\</b\>
echo - Empresa
rsync -az --delete --force --exclude '.~lock.*' $BEXC $SPRM"$SKEY"$BSPC/share/empresa $BUSR$BCMP$BPTH/
echo - Otra
rsync -az --delete --force --exclude '.~lock.*' $BEXC $SPRM"$SKEY"$BSPC/share/otro $BCMP$BPTH/
echo \<b\>"Base de Datos (MySQL)"\</b\>
echo - Local
rsync -az --delete $SPRM"$SKEY"$BSPC/var/lib/mysql $BCMP$BPTH/
echo \<b\>Sitios Web\</b\>
# rsync -az $SPRM"$SKEY"$BSPC/etc/php.ini $BCMP/etc/
rsync -az --delete $SPRM"$SKEY"$BSPC/var/www $BCMP$BPTH/
echo \<b\>Unidad de red\</b\>
rsync -az --delete $SPRM"$SKEY"$BSPC/share/g $BCMP$BPTH/
echo \</pre\>\</td\>\</tr\>
echo \<tr\>\<th\>Termino:\</th\>\<td\>`date`\</td\>\</tr\>
echo \</table\>
echo \<br /\>

Este script también puede ser ejecutado manualmente para las copias en unidades removibles (parametros O,P)

La copia es exacta (Se copian solo los archivos que hayan cambiado y se borran los eliminados)... la información es comprimida para la transmisión en la red, pero no es almacenda comprimida (man rsync)

La configuración de la conexión mediante ssh, SAMBA, SAMBA con papelera de reciclaje, ACL's, etc. pueden ser consultadas en los manuales locales.

Espero que sea de utilidad.

JohnToro
 
Perfil
 Citar
Anónimo ajdm
Publicado en 17/09/13 04:00  
Quote by: John J. Toro A.

Cordial saludo,

Aunque el requerimiento del post puede ser simple, quiero dar un ejemplo que puede ser practico para una red local.

Tener un backup dentro de la misma maquina es un riesgo alto, igualmente el contar con solo una única opción de recuperación.

Qué pasa si falla el disco?
Que pasa si necesito recuperar un archivo dañado que ya fue respaldado ?
Que pasa si hay un incendio/terremoto/robo/etc. que afecte los equipos de tu red ?

Con esto se aclara que existen múltiples posibilidades de contingencias antes las cuales deberíamos estar preparados y contar con una forma de recuperación.

Por esto se debe establecer una política de copias de seguridad que nos de la posibilidad de recuperar copias de diferentes periodos de tiempo, que sean externas a la maquina y contar con lo menos con una copia almacenada en una ubicación diferente... por decir lo menos.

Aclarando que existen herramientas que facilitan esta tarea, así como hardware especializado para esto, puedo decir que también podemos valernos de los recursos disponibles para lograrlo.

Actualmente las estaciones de la red cuentan con buenas capacidades de disco, que nos pueden servir para almacenar múltiples copias de seguridad. Discos externos USB son un buena opción para tener copias externas.

En este ejemplo se seleccionaron 6 estaciones de la red para hacer un respaldo diario (lunes a Sábado) y una maquina remota accesible desde Internet, a las cuales se tiene acceso desde el servidor mediante ssh (ademas de otras copias). El respaldo se realza automáticamente mediante un script ejecutado mediante cron.

/etc/crontab:

PHP Formatted Code
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
# !!!! Lineas Adicionadas por NewRoute
# M H D M DS
# Todos los Dias cada seis horas a los 30 minutos
30 */6 * * * root /root/cron/backup-mail.sh > /var/www/intranet/sistemas/log/back_sm.html 2>&1
# De Lunes a Viernes de 8 AM a 5 PM cada hora
0 8-17 * * 1-5 root /root/cron/backup.sh > /var/www/intranet/sistemas/log/back_sd.html 2>&1
# Sabados de 8 AM a 12 M cada hora
0 8-12 * * 6 root /root/cron/backup.sh > /var/www/intranet/sistemas/log/back_sd.html 2>&1
# Todos los Lunes a las 6 PM
0 18 * * 1 root /root/cron/dbackup.sh 1 >> /var/www/intranet/sistemas/log/back_d.html 2>&1
# Todos los Martes a las 6 PM
0 18 * * 2 root /root/cron/dbackup.sh 2 >> /var/www/intranet/sistemas/log/back_d.html 2>&1
# Todos los Miercoles a las 6 PM
0 18 * * 3 root /root/cron/dbackup.sh 3 >> /var/www/intranet/sistemas/log/back_d.html 2>&1
# Todos los Jueves a las 6 PM
0 18 * * 4 root /root/cron/dbackup.sh 4 >> /var/www/intranet/sistemas/log/back_d.html 2>&1
# Todos los Viernes a las 6 PM
0 18 * * 5 root /root/cron/dbackup.sh 5 >> /var/www/intranet/sistemas/log/back_d.html 2>&1
# Todos los Sabado a las 12 M
0 12 * * 6 root /root/cron/dbackup.sh 6 >> /var/www/intranet/sistemas/log/back_d.html 2>&1
# Todos los dias (Lunes-Sabado) a las 9:45 AM
45 9 * * 1-6 root /root/cron/dbackup.sh E > /var/www/intranet/sistemas/log/back_e.html 2>&1
# Todos los 1 de cada Mes a las 8:15 AM
15 8 1 * * root /root/cron/dbackup.sh M > /var/www/intranet/sistemas/log/back_m.html 2>&1
# !!!! Fin Lineas Adicionadas por NewRoute

La salida de los scripts son almacenados en archivos HTML, que son accesibles desde una intanet.

/root/cron/dbackup.sh
PHP Formatted Code
#!/bin/sh
SPRM=-e" "
SKEY='ssh -i /root/cron/servidor-rsync-key'
BUSR="root@"
BPTH="/share/backup"
BSPC=' '
BEXC=' '
case $1 in
1)
BDSC="Lunes";
BCMP="estacion-1:"
;;
2)
BDSC="Martes";
BCMP="estacion-2:";
# BEXC="--exclude .recycle "
;;
3)
BDSC="Miercoles";
BCMP="estacion-3:"
;;
4)
BDSC="Jueves";
BCMP="estacion-4:"
BEXC="--exclude .recycle "
;;
5)
BDSC="Viernes"
BCMP="estacion-5:"
;;
6)
BDSC="Sabado";
BCMP="estacion-6:"
;;
E)
BDSC="Externo";
BCMP="estacion-7:"
BEXC="--exclude .recycle "
;;
M)
BDSC="Mensual";
BCMP="estacion-8:"
;;
O)
SPRM='';
SKEY='';
BUSR='';
BPTH='/backup';
BDSC='Removible';
BCMP='/media/O'
BEXC="--exclude .recycle "
;;
P)
SPRM=''
SKEY=''
BUSR=''
BPTH="/backup"
BDSC="Removible";
BCMP="/media/P";
BEXC="--exclude .recycle "
;;
*)
exit
;;
esac
echo <table>
echo <caption>Backup: $BDSC - En: $BCMP</caption>
echo <tr><th>Inicio:</th><td>`date`</td></tr>
echo <tr><th>Mensajes:</th><td><pre>
echo <b>Informacion Corporativa</b>
echo - Empresa
rsync -az --delete --force --exclude '.~lock.*' $BEXC $SPRM"$SKEY"$BSPC/share/empresa $BUSR$BCMP$BPTH/
echo - Otra
rsync -az --delete --force --exclude '.~lock.*' $BEXC $SPRM"$SKEY"$BSPC/share/otro $BCMP$BPTH/
echo <b>"Base de Datos (MySQL)"</b>
echo - Local
rsync -az --delete $SPRM"$SKEY"$BSPC/var/lib/mysql $BCMP$BPTH/
echo <b>Sitios Web</b>
# rsync -az $SPRM"$SKEY"$BSPC/etc/php.ini $BCMP/etc/
rsync -az --delete $SPRM"$SKEY"$BSPC/var/www $BCMP$BPTH/
echo <b>Unidad de red</b>
rsync -az --delete $SPRM"$SKEY"$BSPC/share/g $BCMP$BPTH/
echo </pre></td></tr>
echo <tr><th>Termino:</th><td>`date`</td></tr>
echo </table>
echo <br />

Este script también puede ser ejecutado manualmente para las copias en unidades removibles (parametros O,P)

La copia es exacta (Se copian solo los archivos que hayan cambiado y se borran los eliminados)... la información es comprimida para la transmisión en la red, pero no es almacenda comprimida (man rsync)

La configuración de la conexión mediante ssh, SAMBA, SAMBA con papelera de reciclaje, ACL's, etc. pueden ser consultadas en los manuales locales.

Espero que sea de utilidad.



Te felicito amigo, muy practica e interesante tu exposición.

Quisiera saber si es posible hacer algo parecido pero en vez de utilizar rsync, usar tar.

A ver te explico, yo soy administrador de infraestructura y en este momento hago respaldos diariamente tanto del portal como de la base de datos.

Entonces para una hora especifica hago base de datos pero para el portal hago respaldo una vez a la semana.

Ahora bien me gustaría saber (si es posible) si puedes ayudarme a contruir un SH que ejecute el respaldo y luego haga un sftp hacia el servidor remoto donde debo colocar los archivos TAR que se generen.

Puedo contar contigo?

Desde ya mil gracias...
 
 Citar
Contenido generado en: 0,64 segundos Nuevo tema Publicar Respuesta
 Todas las horas son UTC. Hora actual 12:06 .
Tema normal Tema normal
Tema persistente Tema persistente
Tema cerrado Tema cerrado
Nueva publicación Nueva publicación
Persistente con nueva publicación Persistente con nueva publicación
Cerrado con nueva publicación Cerrado con nueva publicación
Ver publicaciones anónimas 
Usuarios anónimos pueden publicar 
Se permite HTML Filtrado 
Contenido censurado