LinuxParty
Aunque tenemos multitud de scripts ya creados con este propósito en nuestra sección de Scriptings, y otros más en la sección de Seguridad, que deberían estar más allí (en Scripting) que en ningún otro lado, voy a compartir con vosotros el script de copias de seguridad que yo utilizo para guardar casi todo lo importante.
Tengo que decir, que como es un script, es bastante configurable, editando el código, claro. El cual he tratado de que sea bastante legilble a mi humilde entender.
El funciomiento es muy simple:
- Copias el código en un "/bin" que crees en tu $HOME, o lo copias en /usr/local/bin
- montas un pendrive, creas una carpeta y desde allí, desde la shell
- Llamas al script "copiacompleta2" y sigues las instrucciones y ya está.
Con eso, tendrás en tu pendrive en una carpeta una copia comprimida en tar gzip el contenido más relevante de tu sistema.
Yo utilizo KDE, por lo que si usas otro entorno menos común, tendrás que adaptarlo a él.
Este es sl script:
#!/bin/bash # # Script "copiacompleta2" ver.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. Configura a tu gusto y necesidad.
# ...Si no quieres tocar nada...
# Por ejemplo, si hubiera imágenes que quieras guardar, copialas en la carpeta Documentos, y lo mismo
# podrías hacer con la música o las descargas, lo demás, se va a excluir. # 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/Downloads" \ --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 "---------------------------------------------------"

-
Scripting
- Shell Scripting para automatizar las tareas de mantenimiento del sistema Linux
- (Nuevo) Script colorido y elegante para comprobar la carga de trabajo (Re-ACTUALIZADO)
- Script para comprobar el Estado General del Ordenador / Servidor.
- Script Linux y BAT de Windows para abrir ficheros aleatoriamente
- Bash-it - un Framework de Bash para controlar sus scripts y aliases
- 3 scripts Linux para monitorizar, hacer copias de seguridad y recoger informació
- Comprensión y aprendizaje de scripts de shell básicos y solución de problemas del sistema de archivos de Linux
- Transfer.sh - Fácil intercambio de archivos desde la línea de comandos de Linux
- 7 Ejemplos de operadores para Grep, como Grep OR, Grep AND y Grep NOT en Linux
- Entrecomillar un resultado obtenido por find
- Script de cuenta atrás en Linux (contdown)
- Quitar la primera y última FILA en una salida, un espacio vacío o en un fichero Shell bash con Linux