All pastes #954565 Raw Edit

Mine

public shellscript v1 · immutable
#954565 ·published 2008-03-23 23:53 UTC
rendered paste body
#!/bin/bash## mauro, backup##clear############################# DECLARACION DE VARIABLES ###############################Tipo de copia solo estos valores (incremental o diferencial)Tcopia=incremental##IP remotaIPremota=192.168.11.24##Usuario remotoUser_remoto=root##Disco duro remotoDDremoto=sda6##Disco Duro localDDlocal=sda6##Nombre del fichero de la copia completanomb_backup=`echo $(date +%Y-%m-%d)_fullbackup.tar.bz2`##nombre del fichero de la copia incremental o diferencialnomb_backup_indi=`echo $(date +%Y-%m-%d)_indibackup.tar.bz2`##listado de aplicaciones instaladas, se guarda en el escritorio del usuario temporalmentedpkg --get-selections > /tmp/bk-paquetes-instalados.txt##Ping para controlar que el equipo remoto este onlineping=`ping -c 2 $IPremota|grep packet\ loss|awk '{print $6}'`##Tamaño de /etctam_etc=`du -ms /etc/|awk '{print $1}'`##Tamañp de /var/logtam_varlog=`du -ms /var/log/|awk '{print $1}'`##Tamaño de /var/libtam_varlib=`du -ms /var/lib/|awk '{print $1}'`##Tamaño de /hometam_home=`du -ms /home/|awk '{print $1}'`##Suma de todos los tamaños ^-^let tam_total=$tam_etc+$tam_varlog+$tam_varlib+$tam_home##Espacio disponible localmentetam_dispo_local=`df -m|grep $DDlocal|awk '{print $4}'`## Dia para el Backup Completodia_full=`date +%u`##fecha de la ultima copia completafecha_ult_backup=`ssh $IPremota ls -t /copias|grep full|head -1|cut -d _ -f1`### Directorio y archivos a ser salvados.#datos='/etc /home /var/log /var/lib /tmp/bk-paquetes-instalados.txt '## Comprobamos que el equipo remoto tenga conexion antes de empezar todo.if [ $ping != 0% ]; then    echo "El equipo en el que va a guardar la copia de seguridad, no se encuenta operativo."    echo "contacte con el administrador"    exitfi	   ########################################	   # COMPROBACIONES LOCALES Y EMPAQUETADO #	   ########################################	   ## Comprobamos que la copia pueda ser almacenada en nuestro equipo	   if [ $tam_total -lt $tam_dispo_local ]; then			echo "Hay espacio diponible, se procede a empaquetar..."		   			  ##creamos una carpeta pra almacenar la copia			if [ ! -d /backups_mauro ]; then					mkdir /backups_mauro					echo "se ha creado un directorio para las copias de seguridad."   			fi 			  			if [ $dia_full -eq 7 ]; then					  echo "se creara una copia completa"					  					  #borramos la copia full. 					  rm -r /backups_mauro/*_full*2> /tmp/logrm					  					  #borramos las copias incrementales o diferenciales					  rm -r /backups_mauro/*_indi*2> /tmp/logrm					  					  ## Creamos nuestra copia de seguridad					  #tar -cjf /backups_mauro/$nomb_backup /home /etc /var/log /var/lib /tmp/bk-paquetes-instalados.txt 					  tar -cjPf /backups_mauro/$nomb_backup $datos 					  					  ##guardamos el tamaño de la copia, lo usaremos mas adelante					  tam_copia=`du -m /backups_mauro/$nomb_backup|awk '{print $1}'`					  					  ##borramos el archivo temporal					  rm /tmp/bk-paquetes-instalados.txt2> /tmp/logrm					  					  echo "se ha empaquetado correctamente y se almaceno en /backups_mauro"			else					 case $Tcopia in 							incremental) 								echo "ha elegido la copia incremental"								tar cjPgf  /tmp/copia.incremental  /backups_mauro/$nomb_backup_indi $datos 								echo "se ha creado la copia incremental "								;;							 							diferencial) 								echo "ha eleguido la copia diferencial"								tar cjPNf $fecha_ult_backup /backups_mauro/$nomb_backup_indi  $datos 								echo "se ha creado la copia diferencial "								;;      					esac					##guardamos el tamaño de los incrementales o diferenciales					  tam_copia=`du -m /backups_mauro/$nomb_backup_indi|awk '{print $1}'`			#fin de la comprobacion del dia			fi	   else		  echo "Lo siento, pero no hay espacio suficiente para realizar el empaquetado..."		  exit		#fin comprobacion del espacio		fi 		#################################		# ENVIAR DATOS AL EQUIPO REMOTO                 #		#################################		#comprobamos que la carpeta en la que vamos a grabar los datos existe y si no la craamos		if test -z `ssh 192.168.0.24 ls -d /backups 2> /tmp/error.carpeta`; then 			ssh 192.168.0.24 mkdir /backups|echo se creo una carpeta;		fi		## espacio del disco, en el equipo remoto.		tam_espacio_remoto=`ssh $User_remoto@$IPremota df -m|grep $DDremoto|awk '{print $4}'`			   ##Si hay Espacio en el equipo remoto.	   if [ $tam_copia -lt $tam_espacio_remoto ]; then			echo "hay espacio en el pc remoto, se procede a  transferir la copia."							## Si es domingo, el bk completo				case $dia_full in						#si el dia es 7(domingo) hace la copia completa						7)							##Copiamos en el otro equipo la copia completa							scp /backups_mauro/$nomb_backup $User_remoto@$IPremota:/backups						    echo "se ha copiado el Backup completo"														## Variables para comprobar MD5SUM							md5_remoto=`ssh $User_remoto@$IPremota md5sum /backups/$nomb_backup|awk '{print $1}'` 							md5_local=`md5sum /backups_mauro/$nomb_backup|awk '{print $1}'`;;												#si el dia no es domingo, hace la copia de las incrementales o diferenciales						*)							##Copiamos en el otro equipo los bks							scp /backups_mauro/$nomb_backup_indi $User_remoto@$IPremota:/backups							 echo "se ha copiado el diferencial o incremental"							 							## Variables para comprobar MD5SUM							md5_remoto=`ssh $User_remoto@$IPremota md5sum /backups/$nomb_backup_indi|awk '{print $1}'` 							md5_local=`md5sum /backups_mauro/$nomb_backup_indi|awk '{print $1}'`;;							esac	 					## comprobamos la integridad de los datos				if [ $md5_remoto = $md5_local ]; then					echo "la copia se realizo con exito"				else					## Si algo ha fallado lo intetengo N veces, si no lo logra,					## el programa termina.								cont=4					while [ $cont -gt 0 ]; do							echo "la copia ha fracazado . quedan "$cont" intentos"							if  [ $dia_full -eq 7 ]; then								scp /backups_mauro/$nomb_backup $User_remoto@$IPremota:/backups  								md5_remoto=`ssh $User_remoto@$IPremota md5sum /backups/$nomb_backup|awk '{print $1}'`							else								scp /backups_mauro/$nomb_backup $User_remoto@$IPremota:/backups   								md5_remoto=`ssh $User_remoto@$IPremota md5sum /backups/$nomb_backup|awk '{print $1}'`							fi							if [ $md5_remoto != $md5_local ]; then								let cont=$cont-1							else								let cont=-1							fi					done					#si el contador llega a 0 es que no se pudo realizar la copia y salgo del programa					if [ $cont -eq 0 ]; then							echo "lo siento pero fue imposible realizar la copia"							echo "ponte en contacto con el administrador."							exit					else						echo "aunque surgieron problemas, la copia se logro realizar"					#fin de comprobacion del contador					fi				 #fin de comprobacion MD5					fi					   else 	      echo "lo siento, pero en el equipo remoto no hay espacio."	      echo "hay libres solo"$tam_espacio_remoto"m"		  	   fi # fin de la copia de datos.	   ## colorin colorado... este script ha terminado... ^^