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.
[ 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:
- Hacer una copia de seguridad completa de tu sistema Unix / Linux.
- Haz Copia de Seguridad de tu Website, base de datos incluida.
- Excluir directorios con tar, al hacer copias de seguridad en Linux
- tar --exclude para Excluir ficheros y directorios de la copia.
- Cómo exportar volcar una gran base de datos de Mysql.

-
Seguridad
- 4 consejos útiles para proteger la interfaz de inicio de sesión de PhpMyAdmin
- Añadir una capa adicional de seguridad en la interfaz de inicio de sesión de PhpMyAdmin
- Cómo configurar HTTPS (certificados SSL) para asegurar el inicio de sesión de PhpMyAdmin
- Cómo cambiar y asegurar la URL de inicio de sesión predeterminada de PhpMyAdmin
- 4 herramientas útiles para ejecutar comandos en múltiples servidores Linux
- Por fin, conseguir el certificado digital sin salir de casa ya es posible
- ¿Puede C++ ser más seguro? Bjarne Stroustrup sobre garantizar la seguridad de la memoria.
- 5 herramientas de Hacking ético que bien te gustaría aprender.
- Cómo quitar la contraseña de un archivo PDF usando las opciones de la línea de comandos de Linux
- Restringir acceso a usuarios SSH a cierto directorio mediante chroot jail
- Las 5 mejores prácticas para prevenir ataques de inicio de sesión de fuerza bruta SSH en Linux
- Script para hacer copia de seguridad de los Usuarios, Bases de Datos y /var/www/html
- Cómo recuperar un disco o partición de Linux o Windows. NTFS
- Linux/UNIX elimina la sesión SSH colgada que no responde
- Cómo configurar la autenticación de dos factores para SSH en Linux
Comentarios
Suscripción de noticias RSS para comentarios de esta entrada.