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
- Snort para Windows, detección de Intrusos y seguridad.
- 22 herramientas de seguridad de servidores Linux de código abierto en 2023
- 8 hábitos que deben tomar los teletrabajadores altamente seguros
- 7 cosas que incluso los nuevos usuarios de Linux pueden hacer para proteger mejor el sistema operativo
- Recuperar contraseñas de archivos comprimidos en 3 pasos
- Administración: Glances - herramienta de monitoreo y supervisión para Linux
- Cómo monitorear sistemas Linux remotos con Glances
- Los 5 mejores VPN del momento
- Cómo bloquear ataques de fuerza bruta SSH usando SSHGUARD en Linux
- Cómo purgar y limpiar tus discos y borrar archivos en forma segura
- Generar password aletorios en Linux
- LinuxParty 6 meses, estadísticas y crecimiento.
- 10 cortafuegos de seguridad de código abierto útiles para sistemas Linux
- Instalar Mod_Security y Mod_evasive para protegerse contra ataques de fuerza bruta o DDoS
- Malware relacionado con ChatGPT en aumento, dice Meta
Comentarios