Mostrando las entradas con la etiqueta crontab. Mostrar todas las entradas
Mostrando las entradas con la etiqueta crontab. Mostrar todas las entradas

martes, 16 de julio de 2024

Script para automatizar la limpieza con BleachBit en antiX

Script: clean_with_bleachbit.sh


BleachBit . Personalmente yo la uso con antiX. Algunas características que lo hacen interesante:

  • Limpieza profunda: BleachBit es conocido como "el CCleaner para Linux" por su capacidad de limpiar profundamente los sistemas, eliminando cachés, registros, cookies, archivos temporales y más.
  • Soporte para múltiples aplicaciones: Puede limpiar archivos y cachés de una amplia gama de aplicaciones, como navegadores web, suites de oficina y programas de mensajería.
  • Interfaz gráfica y de línea de comandos: Ofrece una interfaz gráfica sencilla y también puede ser usado desde la línea de comandos, lo que lo hace versátil para diferentes tipos de usuarios.
  • Desfragmentación y trituración de archivos: Puede desfragmentar archivos y triturar archivos para una eliminación segura.
Interface de BleachBit

Ventajas:

  • Eficiencia: Es ligero y consume pocos recursos del sistema.
  • Potencia en la limpieza: Se enfoca específicamente en la limpieza y lo hace de manera efectiva.
  • Flexibilidad: La opción de usarlo desde la línea de comandos lo hace adecuado para scripts y automatización . Aca les dejo un ejemplo de como podría ser incorporado a un script (este script opcionalmente luego podría ser incorporado como una tarea administrativa a través de cron).

Código


#!/bin/bash
# --------------------------------------------------------------------------------------------------------------------------------------
# File: clean_with_bleachbit.sh
# By Julio Alberto Lascano http://drcalambre.blogspot.com/
#________          _________        .__                ___.                  
#\______ \_______  \_   ___ \_____  |  | _____    _____\_ |_________   ____  
# |    |  \_  __ \ /    \  \/\__  \ |  | \__  \  /     \| __ \_  __ \_/ __ \ 
# |    `   \  | \/ \     \____/ __ \|  |__/ __ \|  Y Y  \ \_\ \  | \/\  ___/ 
#/_______  /__|     \______  (____  /____(____  /__|_|  /___  /__|    \___  >
#        \/                \/     \/          \/      \/    \/            \/ 
# --------------------------------------------------------------------------------------------------------------------------------------
# Last modified:2024-07-14
# --------------------------------------------------------------------------------------------------------------------------------------

# Script para automatizar la limpieza con BleachBit
# Asegúrate de tener BleachBit instalado y configurado para ejecutarse desde la línea de comandos

# Configurar las opciones de limpieza de BleachBit
# Puedes encontrar la lista completa de opciones en la documentación de BleachBit o usando `bleachbit --list`

# Lista de opciones de limpieza
options=(
    "apt.autoclean"
    "apt.clean"
    "system.cache"
    "system.tmp"
    "chromium.cache"
    "chromium.dom"
    "chromium.history"
    "chromium.form_history"
    "chromium.search_engines"
    "chromium.sync"
    "chromium.vacuum"
    "firefox.cache"
    "firefox.crash_reports"
    "firefox.dom"
    "firefox.forms"
    "firefox.session_restore"
    "firefox.site_preferences"
    "firefox.vacuum"
    "google_chrome.cache"
    "google_chrome.dom"
    "google_chrome.history"
    "google_chrome.search_engines"
    "google_chrome.vacuum"
)   

# Función para ejecutar la limpieza
run_bleachbit() {
    for option in "${options[@]}"; do
        echo "Limpiando $option"
        bleachbit --clean "$option"
    done
}

# Ejecutar la función de limpieza
run_bleachbit

# Salida del script
echo "Limpieza completada con BleachBit"

Guardar el script en:


 
/usr/local/bin/clean_with_bleachbit.sh

Dar permisos de ejecución al script


chmod +x /usr/local/bin/clean_with_bleachbit.sh

Implementación con CRON

# Editar el archivo crontab para el usuario actual


(crontab -l 2>/dev/null; echo "0 2 * * * /usr/local/bin/clean_with_bleachbit.sh >> /var/log/bleachbit.log 2>&1") | crontab -

En el ejemplo de cron proporcionado programará la ejecución del script clean_with_bleachbit.sh todos los días a las 2:00 AM. Explicación del Cronograma

0 2 * * *: Esta parte del cronograma especifica los momentos en que se ejecutará el script.
0: El minuto en que se ejecutará la tarea (0 significa en el minuto cero de la hora especificada).
2: La hora en que se ejecutará la tarea (2 significa a las 2:00 AM).
*: Cualquier día del mes.
*: Cualquier mes.
*: Cualquier día de la semana.
Interpretación
Minuto (0): El script se ejecutará al minuto 0 de la hora especificada (es decir, al principio de la hora).
Hora (2): El script se ejecutará a las 2:00 AM.
Día del Mes (*): Se ejecutará cualquier día del mes.
Mes (*): Se ejecutará cualquier mes.
Día de la Semana (*): Se ejecutará cualquier día de la semana.
Verificación Después de ejecutar el comando anterior, puedes verificar que la tarea cron se haya configurado correctamente utilizando el siguiente comando:


crontab -l

Implementación con ANACRON

Usar anacron en lugar de cron para tu script de limpieza con BleachBit puede ofrecer varias ventajas, especialmente si estás en un entorno donde el equipo no está encendido constantemente o en horarios específicos.

Aquí están algunas de las ventajas:
  • Ejecución Garantizada: anacron garantiza que las tareas programadas se ejecuten incluso si el equipo estuvo apagado durante el horario programado. En contraste, cron solo ejecuta tareas en momentos específicos y las tareas se pierden si el equipo no está encendido.
  • Flexibilidad de Horarios: anacron permite definir periodos en días para la ejecución de tareas (e.g., diario, semanal, mensual) sin necesidad de especificar una hora exacta, lo que ofrece mayor flexibilidad para equipos que no están siempre encendidos.
  • Fácil Configuración para Tareas Periódicas: Para tareas que necesitan ejecutarse al menos una vez al día, anacron es una opción más sencilla y robusta. En lugar de depender de un cronjob que puede no ejecutarse si el sistema está apagado, anacron simplemente ejecuta la tarea la próxima vez que el sistema esté encendido.
  • Manejo Automático de Retrasos: Si una tarea se retrasa (por ejemplo, porque el equipo estuvo apagado en el momento programado para la ejecución), anacron se encargará de ejecutarla la próxima vez que el equipo esté encendido. Esto asegura que las tareas críticas no se pierdan simplemente porque el equipo no estaba disponible en el momento exacto de la programación, a diferencia de cron, que no reprograma tareas perdidas.

El COMO usar anacron con un usuario común, aunque requiere algunos pasos adicionales en comparación con cron. A continuación, una explicacíon cómo configurar anacron para un usuario común.

Instalar anacron.

Primero, asegúrate de que anacron esté instalado en tu sistema. En la mayoría de las distribuciones basadas en Debian/Ubuntu, puedes instalarlo con:.


sudo apt-get install anacron

Crear Directorios y Archivos de Configuración

anacron generalmente se configura a nivel de sistema, pero puedes configurarlo para un usuario común creando los directorios y archivos necesarios en tu directorio de inicio.

Crear Directorios:

Crea un directorio ~/.anacron para almacenar los archivos de estado de anacron:



mkdir -p ~/.anacron

Crear el Archivo de Tareas:

Crea un archivo llamado anacrontab en tu directorio de inicio:



touch ~/.anacron/anacrontab

Luego, edita este archivo con tu editor de texto preferido y añade la configuración de la tarea. Por ejemplo, para ejecutar el script de limpieza con BleachBit diariamente:


# archivo de configuración para anacron
# formato: periodo   demora   identificador   comando
# Trabajo diario
1       5       clean_with_bleachbit   /usr/local/bin/clean_with_bleachbit.sh >> /var/log/bleachbit.log 2>&1 && echo "---- $(date) ----" >> /var/log/bleachbit.log

Este ejemplo configura anacron para ejecutar el script clean_with_bleachbit.sh diariamente.

  • 1: Especifica que el trabajo debe ejecutarse diariamente.
  • 5 clean_with_bleachbit: Esto significa que el trabajo se ejecutará 5 minuto después de que anacron se inicie.
  • /usr/local/bin/clean_with_bleachbit.sh: Es el script que se va a ejecutar.
  • >> /var/log/bleachbit.log: Redirige la salida estándar (stdout) del script al archivo /var/log/bleachbit.log. El operador >> añade la salida al final del archivo sin sobrescribirlo.
  • 2>&1: Redirige la salida de error estándar (stderr) al mismo lugar que la salida estándar (stdout).

Desglose de 2>&1

  • 2 representa el descriptor de archivo para stderr.
  • > es el operador de redirección.
  • &1 significa que stderr se redirigirá al mismo lugar que stdout.

Crear un Script para Ejecutar anacron

Para asegurarte de que anacron se ejecute regularmente, incluso si el equipo se apaga, puedes crear un script que ejecute anacron cada vez que inicies sesión o se inicie el entorno de escritorio.

Crear el Script:

Crea un archivo llamado run_anacron.sh en tu directorio de inicio:



touch ~/run_anacron.sh

Luego, edita este archivo y añade lo siguiente:


#!/bin/bash

# Esperar 1 minuto para asegurar que el entorno esté listo
sleep 60

# Registro adicional para depuración
echo "Running Anacron script at $(date)" > ~/anacron_debug.log
echo "Current user: $(whoami)" >> ~/anacron_debug.log
echo "Current directory: $(pwd)" >> ~/anacron_debug.log
echo "Environment variables: $(env)" >> ~/anacron_debug.log
echo "Anacron status before execution:" >> ~/anacron_debug.log
/sbin/anacron -T -t ~/.anacron/anacrontab >> ~/anacron_debug.log 2>&1

# Ejecutar Anacron
/sbin/anacron -t ~/.anacron/anacrontab -S ~/.anacron -s
exit_code=$?

# Verificar el código de salida y registrar en el log
if [ $exit_code -eq 0 ]; then
    echo "Starting Anacron at $(date)" > ~/anacron_log.log
else
    echo "Anacron failed to start at $(date) with exit code $exit_code" > ~/anacron_log.log
fi

# Registrar el estado después de la ejecución
echo "Anacron status after execution:" >> ~/anacron_debug.log
/sbin/anacron -T -t ~/.anacron/anacrontab >> ~/anacron_debug.log 2>&1

Ejecutar anacron al Iniciar Sesión

Finalmente, configura tu entorno para ejecutar anacron al iniciar sesión. Puedes agregar el script run_anacron.sh a tus aplicaciones de inicio.

Para GNOME, por ejemplo:

  • Abre "Aplicaciones de inicio" (Startup Applications).
  • Añade una nueva entrada: Nombre: anacron
  • Comando: /home/tu_usuario/run_anacron.sh
    Comentario: Ejecutar tareas de anacron
  • Resumen: Siguiendo estos pasos, puedes usar anacron con un usuario común para ejecutar tareas programadas, asegurándote de que se ejecuten incluso si el equipo estuvo apagado durante el tiempo programado.

Además de estas variantes predefinidas, puedes definir tareas usando un formato más detallado, especificando el número de días entre ejecuciones. Aquí tienes algunos ejemplos adicionales:

Variantes de anacron

  • Especificar el Número de Días
    • Puedes especificar cualquier número de días entre ejecuciones.
    • Formato: [número de días] [demora en minutos] [identificador] [comando]
    • Ejemplo para ejecutar cada 3 días:
      
              
      3 1 clean_with_bleachbit /usr/local/bin/clean_with_bleachbit.sh >> /var/log/bleachbit.log 2>&1
              
              

Ejemplos Adicionales

  • Ejecutar Cada 2 Días:
    
        
    2 1 clean_temp_files /usr/local/bin/clean_temp_files.sh >> /var/log/clean_temp_files.log 2>&1
        
        
  • Ejecutar Cada 10 Días:
    
        
    10 1 backup_data /usr/local/bin/backup_data.sh >> /var/log/backup_data.log 2>&1
        
        

Sintaxis del Archivo anacrontab

Cada línea en el archivo anacrontab sigue esta sintaxis:

[periodo] [demora en minutos] [identificador] [comando]
  • periodo: Número de días entre ejecuciones.
  • demora en minutos: Tiempo de espera antes de ejecutar la tarea después de iniciar anacron.
  • identificador: Un nombre único para identificar la tarea.
  • comando: El comando o script a ejecutar.

Archivo ~/.anacron/anacrontab con Varias Tareas


# archivo de configuración para anacron
# formato: periodo   demora   identificador   comando
# Trabajo diario
1       5       clean_with_bleachbit   /usr/local/bin/clean_with_bleachbit.sh >> /var/log/bleachbit.log 2>&1
# Trabajo semanal
7       1       clean_logs             /usr/local/bin/clean_logs.sh >> /var/log/clean_logs.log 2>&1
# Trabajo mensual
30      30      system_backup          /usr/local/bin/system_backup.sh >> /var/log/system_backup.log 2>&1
# Otros trabajos
3       1       clean_temp_files       /usr/local/bin/clean_temp_files.sh >> /var/log/clean_temp_files.log 2>&1
10      1       backup_data            /usr/local/bin/backup_data.sh >> /var/log/backup_data.log 2>&1

Estas configuraciones permiten una gran flexibilidad en la programación de tareas periódicas, asegurando que se ejecuten incluso si el sistema no está encendido en el momento exacto programado.

viernes, 12 de abril de 2019

Respaldo de bases de datos MySQL de un servidor Debian, con otro puesto de Debian, mediante Samba.

En el puesto debian (192.168.0.2), donde se destinará los respaldo del servidor MySQL/MariaDB (192.168.0.1), procedemos a configurar un servidor Samba que contendrá los siguientes recursos compartidos:
 
 #/etc/samba/smb.conf   
  [global]   
  workgroup = INFORMATICA   
  server string = Julio Alberto Lascano - (Samba Server %h)   
  netbios name = DEBIAN-JULIO   
  map to guest = bad user   
 # Depurar la información de registro  
 # log file  
  log file = /var/log/samba/log.%m  
 # nivel de registro general  
  log level = 3  
  [backup-mysql]   
  comment = solo para grupo administracion backup server mysql   
  path = /home/julio/backup/mysql   
  browseable = yes   
  read only = yes   
  guest ok = no   
  write list = @administracion   
  valid users = @administracion   
Hacemos un testparm para validar el contenido del fichero de configuración smb.conf

 root@sistem:/home/julio# testparm /etc/samba/smb.conf  
A continuación creamos el grupo y el usuario que manejará el acceso a samba. Creamos el grupo administracion.
 root@sistem:/home/julio# groupadd administracion  
Añadimos un usuario al grupo para hacer luego las pruebas (creamos el usuario en la máquina y después su password):
 root@sistem:/home/julio# useradd administracionuser  
 root@sistem:/home/julio# passwd administracionuser  
Añadimos el usuario administracionuser al grupo administracion.  Como ya existen, no usaremos
 root@sistem:/home/julio# useradd -g administracion administracionuser  
Sino:
 root@sistem:/home/julio# usermod -g administracion administracionuser  
Crear usuarios locales como usuarios de SAMBA
 root@sistem:/home/julio# smbpasswd -a administracionuser  
Permisos locales adecuados para los recursos compartidos SAMBA
 root@sistem:/home/julio# chmod 775 /home/julio/backup/mysql  
Y cambiamos el usuario y grupo propietarios al grupo que puede escribir :
 root@sistem:/home/julio# chown -hR root:administracion /home/julio/backup/mysql  
Reiniciamos el servidor SAMBA.
 root@sistem:/home/julio# /etc/init.d/samba-ad-dc restart  
Ahora desde el servidor debian mysql/mariadb (192.168.0.1) verficamos los recursos que está compartiendo el servidor SAMBA (192.168.0.2)
 root@sistem:/home/julio# smbclient --list 192.168.0.2  
Que nos mostrará una salida similar a esta:
 root@spse:/home/julio# smbclient --list 192.168.0.2  
 Enter root's password:   
 Domain=[INFORMATICA] OS=[Windows 6.1] Server=[Samba 4.2.14-Debian]  
      Sharename    Type   Comment  
      ---------    ----   -------  
      backup-mysql    Disk   solo para grupo administracion backup server mysql  
      IPC$      IPC    IPC Service (Julio Alberto Lascano - (Samba Server sistem))  
   Domain=[INFORMATICA] OS=[Windows 6.1] Server=[Samba 4.2.14-Debian]  
Finalizada la configuración del servidor Samba del puesto  192.168.0.2, procederemos a la creación de 2 (dos) scripts. en lenguaje bash.
Luego, serán agregados como tareas diarias automáticas, mediante crontab, en el Servidor MySQL/MariaDB 192.168.0.1
Los scripts :
 root@spse:/home/julio/fuentes/bash# ls -l  
 total 8  
 -rwxrwx--- 1 root root 589 abr 9 14:47 backupToJulio.sh  
 -rwxrwxr-x 1 root root 477 abr 4 12:05 mysqldump.sh  
 root@spse:/home/julio/fuentes/bash#   
  1.  mysqldump.sh (Será utilizado para generar los scripts de creación de las bases de datos (estructuras de tablas y datos de las mismas) del servidor MySQL 192.168.0.1)
  2.   backupToJulio.sh (backup bases de datos a otro disco de la red, en este caso el servidor SAMBA 192.168.0.2)
 #!/bin/sh  
 # Esto volcará todas tus bases de datos.  
 # **************************************  
 #     mysqldump.sh
 # **************************************  
 DATE=$(date +%Y%m%d%H%M)  
 for DB in $(echo "show databases" | mysql --defaults-file=/etc/mysql/debian.cnf -N)  
 do  
     mysqldump --defaults-file=/etc/mysql/debian.cnf --single-transaction $DB > /root/mysql/backup/${DB}_${DATE}.sql  
     gzip /root/mysql/backup/${DB}_${DATE}.sql  
 done  
 # Borrar los respaldos que tengan mas de 5 dias (economiza espacio del server)  
 find /root/mysql/backup/ -name "*.sql*" -mtime +5 -exec rm -vf {} \;  
 #!/bin/sh  
 # **********************************************************  
 # backup bases de datos a otro disco de la red (192.168.0.2)  
 # **********************************************************  
 #          backupToJulio.sh  
 # **********************************************************  
 # montar con cifs-utils  
 mount -t cifs //192.168.0.2/backup-mysql /home/julio/papelera -o username=administracionuser,password=administracionuser,domain=INFORMATICA  
 if [ $? = 0 ]; then  
      # copiar al puesto 192.168.0.2 (que está montado en /home/julio/papelera)  
      find /root/mysql/backup/ -name "*.sql*" -mtime -1 -exec cp -v {} /home/julio/papelera/ \;  
      umount /home/julio/papelera/  
 fi  
Solo resta automatizar la ejecución diaria de esto scripts. Para ello, los agragaremos como una tarea cron de root. Acerca de como agragar tareas cron remítase a este tutorial
 root@spse:~# crontab -l  
 # Edit this file to introduce tasks to be run by cron.  
 #   
 # Each task to run has to be defined through a single line  
 # indicating with different fields when the task will be run  
 # and what command to run for the task  
 #   
 # To define the time you can provide concrete values for  
 # minute (m), hour (h), day of month (dom), month (mon),  
 # and day of week (dow) or use '*' in these fields (for 'any').#   
 # Notice that tasks will be started based on the cron's system  
 # daemon's notion of time and timezones.  
 #   
 # Output of the crontab jobs (including errors) is sent through  
 # email to the user the crontab file belongs to (unless redirected).  
 #   
 # For example, you can run a backup of all your user accounts  
 # at 5 a.m every week with:  
 # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/  
 #   
 # For more information see the manual pages of crontab(5) and cron(8)  
 #   
 # m h dom mon dow  command  
 25 6   * * 1-5  /home/julio/fuentes/bash/mysqldump.sh  
 59 11  * * 1-5  /home/julio/fuentes/bash/backupToJulio.sh   
 root@spse:~#   
En este caso hemos configurado a cron para que ejecute mysqldump.sh (192.168.0.1) todos los días habiles (LUN-VIE) a las 06:25 AM
Y para respaldar en el otro disco (192.168.0.2) mediante backupToJulio.sh todos los días habiles (LUN-VIE) a las 11:59 AM