LinuxParty

Ratio: 4 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio desactivado
 

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.

#!/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.linux-party.com/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/.b*" --exclude="$HOME/.c*" --exclude="$HOME/.d*" --exclude="$HOME/.e*" --exclude="$HOME/.f*" \ --exclude="$HOME/.g*" --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.


 

#!/bin/bash
#
# Script 4.04 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: Abril, 2019.
#
# 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"
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.linux-party.com/TutorialLinux/"
echo " "
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
	for i in {1..5}; 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
	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/.b*" --exclude="$HOME/.cache" --exclude="$HOME/.d*" --exclude="$HOME/.e*" \
 --exclude="$HOME/.g*" --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:

 

Pin It

Comentarios   

Xabier
0 # Xabier 21-02-2018 13:46
Eres un jodido maquina, HULIO, voy a aprobar gracias a ti TE AMO :-*
Responder | Responder con una citación | Citar
Ángel
0 # Á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:
Responder | Responder con una citación | Citar
Ángel
+1 # Ángel 21-05-2018 14:38
No me funciona el "tar", que puedo hacer?
Responder | Responder con una citación | Citar
Ángel
+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?
Responder | Responder con una citación | Citar
carla
0 # carla 10-06-2018 13:00
hola alguien sabe el codigo del script para hacer una copia de seguridad de una serie de fitxeros???
Responder | Responder con una citación | Citar

Escribir un comentario


Código de seguridad
Refescar



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

Nos obligan a moslestarte con la obviedad de que este sitio utiliza Cookies. Ver política