🐧#ViernesDeEscritorio. Automatizando nuestros backups en Linux a través de un scripts.💻ESP/EN

avatar
(Edited)

Captura de pantalla.



Introducción:

Introduction:

Hoy quiero presentarles la versión actualizada de Linux Mint Zara 22.2 con escritorio Mate, y a la vez quiero hablarles de un proceso que es sumamente importante para todos los usuarios de Linux y esto es válido para todos no solo para las empresas y los administradores de servidores. Por ejemplo, si un usuario normal tiene un emprendimiento donde maneja base de datos, programas y documentos importantes, es importante que tenga un respaldo de esos documentos y archivos, lo mismo si es un abogado, un periodista, un matemático o un contador, que necesita tener respaldos de todas sus cuentas. Es decir, un respaldo es importante para todos los usuarios que tengan información valiosa y en Linux, podemos hacer un respaldo automatizado a través de un script. Esto nos ahorra el tener que estar haciendo este proceso manualmente y de hecho a través del comando “crom” podemos podemos hacer que se ejecute solo, el día y la hora que le digamos y podemos hacer que lo haga en un archivo comprimido, para que el respaldo ocupe poco espacio en nuestro disco o en el servidor externo donde lo guardemos.

Today I want to present you the updated version of Linux Mint Zara 22.2 with Mate desktop, and at the same time I want to tell you about a process that is extremely important for all Linux users and this is valid for everyone not only for companies and server administrators. For example, if a normal user has a business where he manages databases, programs and important documents, it is important that he has a backup of those documents and files, the same if he is a lawyer, a journalist, a mathematician or an accountant, who needs to have backups of all his accounts. That is, a backup is important for all users who have valuable information and in Linux, we can make an automated backup through a script. This saves us having to be doing this process manually and in fact through the “crom" command we can make it run by itself, the day and time we tell it and we can make it do it in a compressed file, so that the backup takes up little space on our disk or on the external server where we save it.


Captura de pantalla. / Screenshot.


Ventajas de hacer un Backup:

Advantages of making a Backup:

1- Es un proceso fácil de hacer cuando se aprenden los códigos y se aprende el proceso. 2- Se puede tener un respaldo local y uno remoto en un servidor o en una página externa en la nube. 3- Es un proceso fiable, que se realiza de forma automática, sin intervención humana disminuyendo así posibles errores. 4- Tener un respaldo automatizado reduce la carga de trabajo del usuario o del personal de informática de una empresa. 5- Es seguro, ya que puedes cifrar la carpeta de respaldo y puedes darle colocar permiso a los usuarios que puedan acceder a los respaldos, y limitar o negar el permiso a otras personas. 6- Garantizas que toda tu información confidencial y delicada esté respaldada. Por lo que podemos definir que un backup, te da la seguridad y la tranquilidad de poder tener un respaldo de la información importante que necesitamos tener asegurada, para acceder a ella, tanto de forma local, como de forma remota.

1- It is an easy process to do when you learn the codes and you learn the process. 2- You can have a local and a remote backup on a server or on an external page in the cloud. 3- It is a reliable process, which is performed automatically, without human intervention, thus reducing possible errors. 4- Having an automated backup reduces the workload of the user or the IT staff of a company. 5- It is safe, since you can encrypt the backup folder and you can give permission to users who can access the backups, and limit or deny permission to other people. 6- You guarantee that all your confidential and sensitive information is backed up. So we can define that a backup, gives you the security and peace of mind of being able to have a backup of the important information that we need to have secured, to access it, both locally and remotely



Realicemos el script:

Let's make the script:

Ahora,realizaremos un script, y después lo explicaremos paso a paso, con la intención de que el lector sepa como se hace y que significa cada proceso que estamos realizando para la creación de esta herramienta. Esto le permitirá al lector hacer su propio scripts y un respaldo de las carpetas que desee guardar de manera local y de forma automatizada en su equipo.

Now, we will make a script, and then we will explain it step by step, with the intention that the reader knows how it is done and what each process we are performing for the creation of this tool means. This will allow the reader to make their own scripts and a backup of the folders they want to save locally and in an automated way on their computer.



backup_script.sh
#!/bin/bash
========================================================
 de backup automático para Linux
: osomar357
# Realizado el 12/09/2025
========================================================
# Configuración de seguridad: Detener si hay errores:
set -euo pipefail

--- Configuración ---
SOURCE_DIRS=("$HOME/Documentos" "$HOME/Proyectos" "$HOME/.config")
BACKUP_DIR="$HOME/backups"
LOG FILE ="$BACKUP_DIR/backup.log"

--- Funciones ---
log() {
echo "[%(date '+%Y-m-%d %H:%M:%S')] $1"| tee -a "$LOG_FILE"
}

--- Ejecución ---

log "iniciando backup..."

# Crear directorio de backups si no existe

mkdir -p "$BACKUP_DIR"

# Hacer backup de cada directorio fuente

for dir in "${SOURCE_DIRS[@]}; do
 if[-d "$dir"]; then
   BACUK_NAME="backup_$(basename "$dir")$(date + %Y%m%d%H%M%S).tar.gz"
   log"Respaldando $dir → $BACKUP_DIR/$BACKUP_NAME"
   tar -czf"$BACKUP_DIR/$BACKUP_NAME" -C "$(dirname "dir")" "$(basename "$dir")"
   else
   Log"ADVERTENCIA: Directorio no encontrado: $dir"
  fi
 done

# Eliminar backups con más de 30 días.
log "Eliminando backups con más de 30 días ..."
find "$BACKUP_DIR" -type f-name "backup_*.tar.gz" -mtime +30 -exec rm -f {} ;
log "backup completado con éxito."

Para automatizar la tarea lo hacemos con "cron"

To automate the task we do it with "cron"

Programar con cron Abre el editor de cron: crontab -e Agrega esta línea al final: 0 8 * * 1 /ruta/completa/backup_script.sh

Programming with cron Open the cron editor: crontab -e Add this line at the end: 0 8 * * 1 /ruta/completa/backup_script.sh

# Colocamos el comando para dar premisos de ejecución.
chmod +x backup.sh
# Ejecutamos el script con el comando;
./backup.sh


Explicando el Script línea por línea

Explaining the Script line by line


#!bin/bash
Este encabezado indica que el script debe ejecutarse con Bash, que es es el interprete de comandos más usado de Linux.
# El signo numeral (#) se usa para hacer comentarios, toda línea que tenga este signo al principio no se ejecuta.
Scrit de Backup automático para Linux.
Autor y Fecha son comentarios del creador, por eso tienen el signo de # al empezar.
# Seguridad del script
  set -euo pipefail
Es muy importante y significa:
 -e → si un comando falla, el; script se detiene.
 -u → si se usa una variable no definida se detiene.
 -o pipefail → si in comando en una tubería (|) falla, todo el pipeline falla.
Esto evita que el script siga corriendo con errores silenciosos, si los llega a tener. 
# Configuración de variables.
SOURCE_DIRS=("$HOME/Documentos" "$HOME/Proyectos" "$HOME/.config")
BACKUP_DIR="$HOME/backus"
LOG_FILE=$BACKUO_DIR/backup.log"
# Aquí definimos lo siguiente:
- SOURCE_DIRS → Son las carpetas que queremos respaldar.
- BACKUP_DIR → Es el lugar donde queremos guardar los respaldos.
- LOG_FILE → Es el archivo de registro que contiene lo que se pasó en el backup.
Un ejemplo: Si tu usuario es: alicia, el backup de se hará de la siguiente manera:
/home/alicia/Documentos
/home/alicia/Proyectos
/home/alicia/.config
Y los guardará en /home/alicia/backups
ón de log
log() {
  echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a"$LOG_FILE"
 }
Esta función imprime un mensaje con fecha y hora y lo guarda en el archivo de log.
-  tee -a → muestra el mensaje en pantalla y además lo agraga (-a) al log.
Ejemplo: [2025-09-12 15:00:00] Iniciando backup...
En nuestro caso esta con el signo de % que abarca todos los números
- %Y → Añó completo en 4 dígitos (2025)
- %m → Mes (01 al 12)
- %d → Día del mes. (1 al 31)
- %H → Hora en formato militar (00 a la 23)
- %M → Minutos (00 al 59)
- %S → Segundos (00 al 59)
Entonces si hoy fuesen las 15:42:07 del día 12 de septiembre, el resultado sería: TIMESTAMP=20250912154207
# Inicio del backup
log "Iniciado backup..."
Primer mensaje para avisar que inició el proceso.     
 # Crear directorio si no existe.
mkadir -p "BACKUP_DIR"
mkdir -p crea la carpeta backup
Y si ya existe no da error
 para respaldar directorios
for dir in "${SOURCE_DIRS[@]}"; do
if[ -d "$dir" ]; then
BACKUP-NAME="backup_#(basename "dir")$(date +%Y%m%d%H%M%S).tar.gz"
log "Respaldando $dir → $BACKUP_DIR/$BACKUP_NAME"
tar -czf "$BACKUP_DIR/$BACKUP_NAME" -C "$(dirname "$dir")" "$(basename "dir")"
else
log "ADVERTENCIA: Directorio no encontrado: $dir"
fi
done
Esto es el corazón que le da funcionamiento al script:
- for dir in ... → recorre cada carpeta de la lista SOURCE_DIRS
- if[ -d "$dir"] →  revisa si la carpeta existe.
- BACKUP_NAME → genera un nombre único con fecha y hora.Podría ser algo como este ejemplo: backup_Documentos_2020912_154230.tar.gz
- tar -czf → comprime la carpeta en archivo .tar.gz
* -c crear
* -z comprimir con gzip
* -f nombre del archivo resultante
- -C → cambia al directorio padre antes de empaquetar, eso evita que se guarde la ruta completa
Ejemplo: si se respalda /home/alicia/Documentos, el archivo tar contendrá solo documentos y no toda la ruta completa desde /home.
 # Mensaje final
log "Backup completado con éxito"
Cron para la automatización:
# Hacer copia cada: 
- crontab -e → abre el archivo de tareas automáticas, donde colocamos los datos para que se haga el respaldo.
- 106*** → Esto significa que el respaldo se hará todos los días a las 6 y 10 de la mañana
- /path/to/backup_script.sh → aquí se debe poner la ruta del sript.

Lo de la fecha confunde vamos a explicarlo:
El * en la fecha del cron significa todos los valores posibles, acá hablamos de los días del mes, los años las horas y los segundos.
Pongamos un ejemplo de una fecha nueva:
0 8 20 * */path/to/backup_script.sh
Que sinifica:

- Minuto 0 → en punto.
- hora 8 → a las 8 dela mañana.
- Día del mes 20 → Solamente el día 20 del mes.
- Mes * → Todos los meses.
- Día de la semana * → No importa que día de la semana caiga el día 20, ese día se hará el backup.
# Borrar los backups viejos cada 30 días.
find "$BACKUP_DIR" -type f-name "backup_*.tar.gz" -mtime +30 -exec rm -f{};

* -tipe f → solo archivos.
* -name "backup_*.tar.gz" → significa que empieza con backup_ y termina en .tar.gz
* -mtima +30 → modificados hace más de 30 días
* -exec rm -f {}; → los borra 

Así explicamos el sacript línea por línea.

This is how we explain the sacript line by line.

Este es es el script funcionando

This is the script working



Muchas gracias por visitar mi post, espero que el mismo sea de ayuda para todos.

Thank you very much for visiting my post, I hope it will be helpful for everyone.


Referencias:

1, 2,


Translated with www.yandex.com



Crece en Hive con el apoyo de Crypto Company.

Ingresa a su Discord aquí.


#Archon, es una comunidad que apoya proyectos, resuelve problemas, y te ayuda a crecer en Hive.

Visita su Discord, tienen un chat en español.






0
0
0.000
2 comments
avatar

¡Enhorabuena!


Has recibido el voto de PROYECTO CHESS BROTHERS

✅ Has hecho un buen trabajo, por lo cual tu publicación ha sido valorada y ha recibido el apoyo de parte de CHESS BROTHERS ♔ 💪


♟ Te invitamos a usar nuestra etiqueta #chessbrothers y a que aprendas más sobre nosotros.

♟♟ También puedes contactarnos en nuestro servidor de Discord y promocionar allí tus publicaciones.

♟♟♟ Considera unirte a nuestro trail de curación para que trabajemos en equipo y recibas recompensas automáticamente.

♞♟ Echa un vistazo a nuestra cuenta @chessbrotherspro para que te informes sobre el proceso de curación llevado a diario por nuestro equipo.


🏅 Si quieres obtener ganancias con tu delegacion de HP y apoyar a nuestro proyecto, te invitamos a unirte al plan Master Investor. Aquí puedes aprender cómo hacerlo.


Cordialmente

El equipo de CHESS BROTHERS

0
0
0.000
avatar

[@PowerPaul:]

Hey! Because of your participation in the @CryptoCompany community and your participation in the "Banner for Boost" campaign you received a vote from your CryptoCompany and its trail! Thank you & Hive a great day!

Please don't vote on this comment as a thank you, because this comment is not really POB. If you like to thank me for my service & support development of more services, please think about a small HP delegation to @PowerPaul or visit my blog & leave a vote on a posting there. Thank you very much!
Recent posting from @PowerPaul or the CryptoCompany network:
(ENG/DEU) Nanobots, Pain, and Programming – Episode 4 of My Secret Agent Transformation (ENG/DEU) 46 Raffles, Sweepstakes & Promotions for You + Own Photo Contest: Prompt 'Emptiness'
0
0
0.000