Script,s de Mantenimiento


Índice:

   Los script,s de mantenimiento

      tr_cron.sh

      tr_backup_important.sh

      tr_check_backup_deja_dup.sh

      tr_limpieza.sh

      tr_rsync_to_wd.sh

   Sincronización HOME en NAS WD (tr_rsynt_to_wd.sh)

      Parámetros rsync

      Parámetros

      Configuración del script

      Archivo de exclusiones

   Limpieza de archivos y directorios (tr_limpieza.sh)

      Parámetros

      Configuración del script

   Backup documentación importante en la nube (tr_backup_important.sh)

      Parámetros

      Configuración del script

      Información a proporcionar de cada backup

      Añadir un backup

      Funcionamiento de _backup_dirs


Los script,s de mantenimiento  ⮴  

Es sistema de mantenimiento está compuesto por los siguientes script,s:


tr_cron.sh  ⮴  

Es el encargado de lanzar las tareas de mantenimiento, se lanza desde el

crontab del usuario:

      @reboot bash /home/juanp/script_juanp/00_estudio_1/tr_cron.sh


tr_backup_important.sh  ⮴  

Este script realiza una copia de seguridad cifrada en la nube de los direc-

torios que se le indiquen con el intervalo establecido.


tr_check_backup_deja_dup.sh  ⮴  

Revisa e informa de la última fecha/hora en la que se realizó la copia de

seguridad programada en Deja-dup.


tr_limpieza.sh  ⮴  

Este script elimina los archivos antiguos y directorios vacíos de los direc-

torios que se le indican.


tr_rsync_to_wd.sh  ⮴  

Este script sincroniza HOME en el NAS WD con las exclusiones indicadas en

el archivo de exclusiones.


Sincronización HOME en NAS WD (tr_rsynt_to_wd.sh)  ⮴  

Este script sincroniza HOME en el NAS WD con las exclusiones indicadas en el

archivo de exclusiones.


Parámetros rsync  ⮴  

El comando que se ejecuta es:


    rsync -rtv \

          --delete-after \

          --max-delete=8000 \

          --modify-window=2 \

          --exclude-from="$FILE_EXCLUDES" 

          "$ORIGEN" "$DESTINO" \

          2> "$FILE_LOG_ERROR" | _log_add



No se copian de ninguna forma los symlinks, no se usa:


Parámetros  ⮴  


Configuración del script  ⮴  

Se ha de establecer un valor para:

  1. Para rsync:

    • ORIGEN: Origen de la sincronización. Si no finaliza con contrabarra

      se le añadirá.

    • DESTINO: Destino de la sincronización. Si no finaliza con contrabarra

      se le añadirá.

    • FILE_EXCLUDES: Archivo con las exclusiones

  2. Para comprobar que el destino esté montado correctamente:

    • SOURCE: Origen del punto de montaje

    • TARGE: Destino del punto de montaje

  3. Otros:

    • NUM_DIAS_LOGS: Número de días que se mantendrán los log,s. Es-

      tablecido en 30.

    • INTERVALO: Número de horas que han de pasar entre una copia y

      la siguiente. Establecido en 12 horas.


Archivo de exclusiones  ⮴  

El archivo de exclusiones debe encontrase en el directorio de configuración

del script.

  1. Los archivos/carpetas a excluir han de indicarse respecto a la carpeta

    raíz de la sincronización. Han de comenzar por contrabarra o un símbolo

    de comodín.

  2. Las carpetas han de finalizar con contrabarra /

  3. Si se incluye una carpeta/archivo a excluir del que se haya hecho ya copia

    de seguridad, hay que eliminarlo de la copia manualmente. Incluir archivos

    y/o carpetas en exclusiones, no implica que sean borradas de la copia de

    seguridad si ya se hubiera realizado una copia.


Limpieza de archivos y directorios (tr_limpieza.sh)  ⮴  

Este script elimina los archivos antiguos y directorios vacíos de los direc-

torios que se le indican.


Parámetros  ⮴  


Configuración del script  ⮴  

Se ha de establecer un valor para:

  1. NUM_DIAS_LOGS: Número de días que se mantendrán los log,s. Es-

    tablecido en 30.

  2. INTERVALO: Número de horas que han de pasar entre una copia y

    la siguiente. Establecido en 12 horas.


Los directorios a tratar se indican en el siguiente array:


      A_DIR_TO_CLEAN=(

      "$HOME/Descargas;15;*"

      "$HOME/temporal;30;*"

      "$HOME/Imágenes/Capturas de pantalla;30;*"

      "$HOME/Descargas;1;torrent"

      "$PATHSCRIPT/files/files_logs;30;*"

      "$PATHSCRIPT/files/files_log_error;30;*"

      "$PATHSCRIPT/files/files_pid;30;*"



De cada directorio a tratar se indica:


  1. Path absoluto

  2. Número de días de antigüedad a partir de la que se eliminarán los archivos.

  3. Extensión de los archivos a eliminar. El patrón * eliminará hará que la

    tarea se aplique a todos los archivos.


Backup documentación importante en la nube (tr_backup_important.sh)  ⮴  

Este script realiza una copia de seguridad cifrada en la nube de los directo-

rios que se le indiquen con el intervalo establecido.


La nube usada es MEGA y se usa el paquete megacmd para el acceso a la misma.


Puede realizar uno o varios backup,s.


Parámetros  ⮴  

El script puede recibir:


Configuración del script  ⮴  

Se ha de establecer un valor para:

  1. NUM_DIAS_LOGS: Número de días que se mantendrán los log,s.


Información a proporcionar de cada backup  ⮴  

  1. Archivo que contiene la lista de los directorios de los que se realiza-

    ra el backup.

    Este archivo puede contener líneas de comentarios precedidas por el sím

    bolo #. Las líneas que contienen los directorios a incluir en el

    backup no deben tener espacios iniciales ni finales.

  2. [Opcional] Archivo que contiene la lista de las exclusiones que se rea-

    lizarán a la hora de comprobar si ha habido modificaciones en los dire-

    torios desde el último backup realizado.

    Este archivo puede contener líneas de comentarios precedidas por el sím

    bolo #.

  3. Archivo con la contraseña con la que se cifrará el backup antes de su-

    birlo a la nube

  4. Directorio temporal donde se almacenará los archivos temporales gener-

    rados durante el proceso.

  5. Swicht [FOCE_BACKUP] que indicará si se fuerza (1) o no (0) la reali-

    zación del backup, con independencia de haya o no modificaciones.

  6. Directorio de destino donde se almacenará el backup cifrado.

  7. Archivo que contiene las credenciales de acceso al almacenamiento en

    la nube. En la primera línea el nombre del usuario y en la segunda la

    contraseña.

  8. Intervalo de tiempo, en horas, que debe transcurrir como mínimo entre

    dos backup,s.


Añadir un backup  ⮴  

  1. Al final del script se definen los backup,s a realizar:


          # Backup 1

          INTERVALO=1

          PREFIJO_BACKUP="f_bckp_11"

          PATH_DESTINO_MEGA="/backup_new"

          FILE_CREDENCIALES_MEGA="/home/juanp/script_juanp/files/files_pass/mega.passw"

          FILE_PASW_COMPRES="$K_CFG_SCRIPTS_PATH_SYSTEM/files/files_pass/file.passw"

          FILE_FOLDERS=$(mktemp -p "$K_CFG_TMP_DIR_SCRIPT" tmp.XXXXXX)

          FILE_EXCLUDES=$(mktemp -p "$K_CFG_TMP_DIR_SCRIPT" tmp.XXXXXX)

          _scp_debug "$FILE_FOLDERS"

          cat >> "$FILE_FOLDERS" <

          # Direcciones absolutas, sin espacios en blanco al inicio o final y sin barra

          # final

          $HOME/Documentos/banco

          $HOME/Documentos/Renta

          $HOME/Documentos/0_Familia

          $HOME/script_juanp/files/files_pass

          $HOME/Documentos/casa

          $HOME/.var/app/org.gnome.Shotwell/data

          $HOME/.local/share/evolution

          $HOME/.gnupg


          EOF

          cat >> "$FILE_EXCLUDES" <

          $HOME/.gnupg/random_seed


          EOF    

  2. Tras ello se llama a la función encargada de realizar el backup:

          _backup_dirs "$FILE_FOLDERS"            \

                   "$FILE_EXCLUDES"           \

                   "$FILE_PASW_COMPRES"       \

                   "$K_CFG_TMP_DIR_SCRIPT"    \

                   "$PREFIJO_BACKUP"          \

                   "$FORCE_BACKUP"            \

                   "$PATH_DESTINO_MEGA"       \

                   "$FILE_CREDENCIALES_MEGA"  \

                   "$INTERVALO"


Funcionamiento de _backup_dirs  ⮴  

  1. Comprobar los parámetros recibidos

  2. Comprobar hay que realizar el backup:

    • Backup forzado o no

    • Intervalo

    • Modificaciones

  3. Crear un archivo tar con los directorios.

  4. Comprimir el archivo tar.

  5. Cifrar el archivo tar.

  6. Crear un script para ayudar a descifrar el backup cifrado y comprimirlo.

  7. Subir a MEGA el backup cifrado y el script de ayuda.

  8. Guarda la información de la tarea realizada.

    • Del backup:

      • Prefijo

      • Nombre del fichero que lo contiene

      • Directorio de MEGA donde se almacena

      • Hash del archivo

      • Momento en el que realizó el backup

                        name = f_bckp_11

                        name_file_upload = f_bckp_11_20260205085500.tar.gz.gpg

                        path_file_upload = /backup_new/f_bckp_11

                        hash_file = 63f6dcc6e69d54ebb18b80d5c7cb462ceab50e8c5a6aba11d69b941d984fa116

                        time_backup = 1770321300009

                  

                  .- De cada directorio:

                  

                    .- Directorio que se procesa

                    .- Momento en el que se procesa

                    .- Momento en el que se procesa en fecha/hora standar

                    .- Se usa o no fichero exclude

                      folder = /home/juanp/Documentos/banco

                      last_run = 1770314373731

                      last_run_date = 2026-02-05 18:59:33.731

                      file_excludes = SI (ver en log)

                  

                

            


            El script genera un archivo de log de cada ejecución y lo almacena en la 

            carpeta de logs, estos archivo se mantendrán durante el número de días que 

            se haya establecido en NUM_DIAS_LOGS.


            La información persistente se almacena en el archivo ini del script