LinuxParty
[ 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
- Conexión Segura NFS en Linux, Tunelizar NFS sobre SSH y Configuración de NFS sobre SSH para Mayor Seguridad
- Utilizar ssh sin contraseña con ssh-keygen y ssh-copy-id
- Millones de teléfonos móviles podrían ser vulnerables a la vigilancia del gobierno chino
- Cómo limitar las conexiones SSH a la red local en Linux
- Los televisores inteligentes son como un «caballo de Troya digital» en los hogares
- Snort para Windows, detección de Intrusos y seguridad.
- Detección de Intrusiones con las herramientas: BASE y Snort.
- El Sistema de Detección de Intrusos: Snort. ( Windows y Linux )
- Configuración con Ejemplos de Snort para Windows, detección de intrusiones
- ¿El gobierno de EE. UU. ignoró la oportunidad de hacer que TikTok fuera más seguro?
- ¿Qué es SSH y cómo se utiliza? Los conceptos básicos de Secure Shell que necesitas saber
- Asegurar memcached del servidor, para evitar amplificar ataques DDoS
- Consejos de Seguridad para Pagos Móviles en España: Protege tus Transacciones con Estos Consejos Prácticos
- 22 herramientas de seguridad de servidores Linux de código abierto en 2023
- 8 hábitos que deben tomar los teletrabajadores altamente seguros
Comentarios