LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

[ Actualizado 2022-12-22  - 19:54 ]

Iba a escribir un artículo sobre cómo hacer una copia de seguridad, pero resulta que ya hay artículos similares en la web, así que decidí, que lo mejor que se podía hacer, era un script para que realizará todo el trabajo por nosotros, él solito, sin tener que hacer nada, sólo editando aquellas cosas que quieres que el script copie o no.

Yo al script lo he llamado "copiacompleta.sh", y tras editarlo, se le asignan los permisos de ejecución:

chmod a+x copiacompleta.sh

Bien puedes crearte una carpeta "bin", --si no existe-- en tu propio $HOME creando, copiando o moviendo allí al mismo el fichero, y si lo pierdes, pues vuelves a éste artículo y lo creas nuevamente.

Esta es la versión 1.0 (la primera y más antigua versión), más abajo podrá ver una versión mejorada y extendida de la misma aplicación.

La razón para conservarla, es que al ser la primera, la más simple y más pequeña, es más fácil de estudiar para entender su funcionamiento.

UN SCRIPT SENCILLO PARA ENTENDER LA MECÁNICA

#!/bin/bash
#
# Script 2.21 creado por ExtreHost.com para LinuxParty por Javier Orovengua 
# Fecha de la creación Diciembre de 2016, autoadaptable al nombre de usuario.
# Última actualización: Noviembre de 2017.
# clear echo "Preparando..." echo "---------------------------------------------------" echo "Este script sólo creará un backup del HOME del usuario que lo ejecute, y deberá" echo "editarse el código fuente del mismo para excluir explícitamente los directorios" echo "que NO se añadirán a la copia." echo " " echo "Si es novato, vea el Tutorial de Linux, en la sección de archivos para ampliar" echo "documentación y conocimientos: http://www.linuxparty.es/TutorialLinux/" echo " " # Con ésta variable forzaremos que la copia se guarde allí donde estemos, de esta forma # si llamamos al script desde un disco duro extraible externo, la copia se quedará en dicho # disco duro extraible externo. ActualPath=`pwd` TheUser=$HOME echo "---------------------------------------------------" sleep 2 # Obtenemos la fecha de hoy en la variable "suffix" suffix=$(date +%Y-%m-%d) # Cambiamos al HOME del usuario y mostramos su contenido. cd $HOME ls -lshF --color $HOME pwd echo "Comienza la copia..." sleep 2 # Hará copia de todo, excepto de lo que explícitamente se excluye. tar cvfz $ActualPath/All-$USER-$suffix.tgz \ --exclude="$HOME/.A*" --exclude="$HOME/.bz*" --exclude="$HOME/.cache*" --exclude="$HOME/.d*" --exclude="$HOME/.e*" --exclude="$HOME/.f*" \ --exclude="$HOME/.gtk*" --exclude="$HOME/.i*" --exclude="$HOME/.j*" --exclude="$HOME/.l*" --exclude="$HOME/.L*" --exclude="$HOME/.o*" \ --exclude="$HOME/.p*" --exclude="$HOME/.q*" --exclude="$HOME/.s*" --exclude="$HOME/.t*" --exclude="$HOME/.v*" --exclude="$HOME/.w*" \ --exclude="$HOME/.x*" --exclude="$HOME/Descargas/Música" --exclude="$HOME/Descargas/Torrents" --exclude="$HOME/DiscosVM" --exclude="$HOME/Dropbox" \ --exclude="$HOME/f14" --exclude="$HOME/dwhelper" \ --exclude="$HOME/encript" --exclude="$HOME/temp" --exclude="$HOME/html" --exclude="$HOME/Media" \ --exclude="$HOME/Música" --exclude="$HOME/Vídeos" --exclude="$HOME/VirtualBox VMs" --exclude="$HOME/workspace" \ --exclude="$HOME/android-sdk-linux_86-09-Oct-2016.tgz" --exclude=$HOME/All-$USER-$suffix.tgz $HOME echo "---------------------------------------------------" echo "Copia completada." echo "---------------------------------------------------"

Hemos realizado una versión mejorada del script, para hacerlo desde el modo gráfico, hay algunos "bugs" que todavía no funcionan, si los detectáis y corregís, por favor, los ponéis en los comentarios.

Incluye la creación de las bases de datos, que deberá ver previamente y configurar, siguiendo éste artículo:

Crear Copias de Seguridad (Backups) de MariaDB o MySQL Automáticas con AutoMySQLBackup


 UN SCRIPT MÁS ELABORADO PARA REALIZAR UN TRABAJO COMPLETO...

#!/bin/bash
#
# Script 4.21 creado por EXTREHOST y LinuxParty por Javier Orovengua 
#
# Fecha de la creación Diciembre de 2016, autoadaptable al nombre de usuario.
# Fecha de la última actualización: 22 Diciembre, 2022.
#
# Extraemos el sufijo de la copia, la fecha ordenado en Año-Mes-Día
suffix=$(date +%Y-%m-%d)
#
# El script "automysqlbackup", debe estar instalado. mire el artículo:
# http://www.linux-party.com/89-basesdedatos/9517-crear-copias-de-seguridad-backups-de-mariadb-o-mysql-automaticas-con-automysqlbackup
RUNAUTOMYSQLBACKUP="/usr/local/bin/automysqlbackup"
BACKUPDEUSRLOCALBIN="tar cvfz bkp-usrlocalbin-$suffix.tgz /usr/local/bin"
BACKUPDEVARWWWHTML="tar cvfz bkp-varwwwhtml-$suffix.tgz /var/www/html"
# BACKUPDELCRONTAB="sudo cat /var/spool/cron/$USER ; sudo cat /var/spool/cron/$USER > $HOME/crontab-$suffix.ini ; dir $HOME/crontab*"
clear
echo "Preparando..."
echo " "
echo "El script debe ejecutarse desde consola EN el directorio donde se va a realizar"
echo "la copia de seguridad, y el script guardarlo en el PATH, por ejemplo en el "
echo "directorio: /usr/local/bin." 
echo " "
echo "P.Ej.: monta una unidad, abre una terminal y desde ella usa * copiacompleta2.sh *"
echo "---------------------------------------------------"
echo "Este script sólo creará un backup del HOME del usuario que lo ejecute, y deberá"
echo "editarse el código fuente del mismo para excluir explícitamente los directorios"
echo "que NO se añadirán a la copia."
echo " "
echo "Si es novato, vea el Tutorial de Linux, en la sección de archivos para ampliar"
echo "documentación y conocimientos: http://www.linux-party.com/TutorialLinux/"
echo " "
# Contador
for i in {1..5}; do echo -n " $i " ; sleep 1 ; done
echo ""
# Comprobamos si estamos en modo gráfico o en consola, tan fácil como comprobar una variable.
if [ "$DISPLAY" == "" ] ; then estamos="Estamos en Consola" ; MYRUN=0 ; else estamos="Estamos en modo gráfico" ; MYRUN=1 ; fi

if [ "$MYRUN" == "1" ] ; then
        kdialog --sorry "Para realizar algunas copias es necesario que el usuario sea un\nusuario administrador, para cual deberá introducir su clave.\n\n\nTrataremos de hacer copia de seguridad de las BBDD MySQL/MariaDB\ntratando de ejecutar:\n\n /usr/local/bin/automysqlbackup "
        echo "Variable de MYRUN: " $MYRUN
        echo "Asignando Askpass"
        echo $estamos
#       export SUDO_ASKPASS=/usr/bin/ksshaskpass
#       sudo -A $RUNAUTOMYSQLBACKUP
        echo "==================================================="
        echo "Nos aseguraremos que la aplicación $SUDO_ASKPASS funcionó correctamente"
        echo "si la siguiente línea se ejecuta sin necesidad de pedir nuevamente el pass"
        echo "de pedirla, ejecutela para que funcione."
        echo "==================================================="
#       sudo $RUNAUTOMYSQLBACKUP
        echo "Hacemos un Backup del Crontab..."
#       $BACKUPDELCRONTAB
        sudo cat /var/spool/cron/$USER ; sudo cat /var/spool/cron/$USER > $HOME/crontab-$suffix.ini ; dir $HOME/crontab*
        echo "Hecho... Mostrando..."
        for i in {1..6}; do echo -n " $i " ; sleep 1 ; done
        cat $HOME/crontab-$suffix.ini
        echo "Comienza la copia..."
        for i in {1..6}; do echo -n " $i " ; sleep 1 ; done
        echo ""
fi

if [ "$MYRUN" == "0" ] ; then
        echo "Parte del modo Texto"
        echo "Variable de MYRUN: " $MYRUN
        print "Para realizar algunas copias es necesario que el usuario sea un\nusuario administrador, para cual deberá introducir su clave.\n\n\nTrataremos de hacer copia de seguridad de las BBDD MySQL/MariaDB\ntratando de ejecutar:\n\n /usr/local/bin/automysqlbackup"
        echo $estamos
        sudo $RUNAUTOMYSQLBACKUP
        ECHO "Hacemos un Backup del Crontab..."
        $BACKUPDELCRONTAB
        echo "Hecho... Mostrando..."
        # Contador
        for i in {1..3}; do echo -n " $i " ; sleep 1 ; done
        cat $HOME/crontab-$suffix.ini
        echo "Comienza la copia..."
        # Contador
        for i in {1..5}; do echo -n " $i " ; sleep 1 ; done
        echo ""
fi
echo "Esperamos 5 segundos"
for i in {1..5}; do echo -n " $i " ; sleep 1 ; done
echo ""

# Con ésta variable forzaremos que la copia se guarde allí donde estemos, de esta forma
# si llamamos al script desde un disco duro extraible externo, la copia se quedará en dicho
# disco duro extraible externo.
ActualPath=`pwd`
echo     "---------------------------------------------------"
sleep 2
# Obtenemos la fecha de hoy en la variable "suffix"
suffix=$(date +%Y-%m-%d)
# Cambiamos al HOME del usuario y mostramos su contenido.
cd $HOME
ls -lshF --color $HOME
pwd
echo "Comienza la copia..."
sleep 2
echo "Copiando /usr/local/bin"
sleep 2
$BACKUPDEUSRLOCALBIN
echo "---------------------"
echo "Copiando /var/www/html"
sleep 2
# $BACKUPDEVARWWWHTML
echo "---------------------"
echo "Comienza la copia..."
sleep 2
# Hará copia de todo, excepto de lo que explícitamente se excluye.
tar cvfz $ActualPath/All-$USER-$suffix.tgz \
 --exclude="$HOME/.A*" --exclude="$HOME/.bz*" --exclude="$HOME/.cache" --exclude="$HOME/.d*" --exclude="$HOME/.e*" \
 --exclude="$HOME/.gtk*" --exclude="$HOME/.i*" --exclude="$HOME/.j*" --exclude="$HOME/.L*" --exclude="$HOME/.o*" \
 --exclude="$HOME/.p*" --exclude="$HOME/.q*" --exclude="$HOME/.s*" --exclude="$HOME/.t*" --exclude="$HOME/.v*" \
 --exclude="$HOME/.x*" --exclude="$HOME/Descargas" --exclude="$HOME/DiscosVM"    --exclude="$HOME/Dropbox" \
 --exclude="$HOME/dwhelper"      --exclude="$HOME/encript"  --exclude="$HOME/html"   --exclude="$HOME/.local/share/Trash" \
 --exclude="$HOME/Imágenes"      --exclude="$HOME/Media"    --exclude="$HOME/Música" --exclude="$HOME/Nubes" \
 --exclude="$HOME/ownCloud"      --exclude="$HOME/temp"     --exclude="$HOME/tmp"    --exclude="$HOME/Vídeos" \
 --exclude="$HOME/Videos"        --exclude="$HOME/Virtual*" --exclude="$HOME/workspace" \
 --exclude=$HOME/All-$USER-$suffix.tgz $HOME/
echo "---------------------------------------------------"
echo "Copia completada."
echo "---------------------------------------------------"

 

Para hacer una copia de seguridad del Home de Linux, hemos tomado como referencia los siguientes artículos y posts como bibliografía, por si quieres ampliar.

Quedan fuera del script, por si eres desarrollador o admin, bases de datos y sitios web, que deberás de ampliar por tu propia cuenta.

Bibliografía:

 

Comentarios  

# Xabier 21-02-2018 13:46
Eres un jodido maquina, HULIO, voy a aprobar gracias a ti TE AMO :-*
-1 # Ángel 21-05-2018 13:49
Buenas,como puedo hacer para que no lo haga de todo el contenido y solo lo haga de mi android? :sad:
+1 # Ángel 21-05-2018 14:38
No me funciona el "tar", que puedo hacer?
+1 # Ángel 28-05-2018 13:02
Buenas, como puedo configurar para que el penúltimo número no se cambie cada vez que desconecto y conecto mi android?
# carla 10-06-2018 13:00
hola alguien sabe el codigo del script para hacer una copia de seguridad de una serie de fitxeros???

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías