Vous êtes sur la page 1sur 2

#!

/bin/sh #Script interactivo para copia de seguridad de directorios clear echo " " echo "###################################################" echo "# #" echo "# Este script le har una copia de seguridad #" echo "# de un directorio de su eleccin #" echo "# #" echo "###################################################" echo " " cd ~ # Ingresamos en el directorio /home del usuario # Solicitamos una ruta de directorio echo "Por favor, introduzca la ruta del directorio del que desea hacer backup:" echo "# Intruduzca el directorio por su ruta completa #" read Dir # y nos aseguramos de que dicho directorio existe if [ ! -d $Dir ] ; then echo -e "$Dir no es un directorio vlido \r" echo -e "Saliendo... \a Beeep!" # La opcin \a de echo requiere el mdulo de campana del sistema activo # Pruebe a chequearlo escribiendo como root 'lsmod | grep pcspkr' # ('modinfo pcspkr' le suministrar una informacin ms detallada) exit 1 fi # Asegurmonos, en todo caso, de que se ha introducido al menos un caracter en la solicitud de directorio if [ -z $Dir ] ; then echo -e "$Dir no es un directorio vlido \r" echo -e "Saliendo... \a Beeep!" exit 1 fi # A pesar de no ser requisito para el ejercicio, evitemos que se puedan volcar en backup directorios comprometedores # Nos ceiremos slo a hacer backup de directorios de los usuarios Owner=`ls -al $Dir | head --lines=4 | tail --lines=1 | awk {'print $3'}` if [ $USER != $Owner ] ; then echo "Slo puede hacer copia de sus propios directorios" echo -e "Saliendo... \a Beeep!" exit 1 fi # Comprobemos que existe un lugar donde volcar la copia; ingresamos en l # (Usaremos el comando test para variar) if test -d /tmp/backups ; then cd /tmp/backups else mkdir /tmp/backups && cd /tmp/backups fi # Declaramos una variable til para nombrar el backup Fecha=`date +%Y-%m-%d.%H:%M` # Y procedemos a realizar el backup, de acuerdo a la interaccin del usuario for Copia in `ls` do echo "Existe un archivo llamado $Copia" echo "Desea sobreescribirlo (s/n)?" read Accion case $Accion in s|S)

tar cvfz $Copia.tgz $Dir mv $Copia.tgz backup.$Fecha.tgz echo "----------------------------------------------------------" echo "Se ha sobreescrito el backup" echo "Recuerde que el backup se encuentra en /tmp/backup s" exit 0 ;; n|N) tar cvfzk backup.tgz $Dir mv backup.tgz backup.$Fecha.tgz echo "----------------------------------------------------------" echo "Se ha respetado el backup anterior y se ha generad o uno nuevo" echo "Recuerde que el backup se encuentra en /tmp/backup s" exit 0 ;; *) echo echo echo exit "No es una respuesta vlida" "No se hace nada" -e "Saliendo... \a Beeep!" 1 ;;

esac done # En caso de ser la primera vez que se ejecute el script, # o si hemos eliminado los backups de /tmp/backups # el bucle anterior no hara nada, dado que /tmp/backups estara vacio: Previo=`ls | grep tgz` if [ -f $Previo ] ; then tar cvfz $Copia.tgz $Dir mv $Copia.tgz backup.$Fecha.tgz echo "-----------------------------------------------------------" echo "Se ha creado el backup" echo "Recuerde que el backup se encuentra en /tmp/backups" else exit 0 fi exit 0 # Este script ha sido diseado por ForestuX # salo, modifcalo o haz lo que quieras con l, pero ctame en todo caso. # No me hago reaponsable de las posibles modificaciones.

Vous aimerez peut-être aussi