En aquest projecte, crearem un sistema de còpia de seguretat automatitzat utilitzant Bash. Aquest sistema permetrà fer còpies de seguretat de fitxers i directoris importants de manera regular i automàtica, assegurant que les dades estiguin protegides contra pèrdues.
Objectius del Projecte
- Entendre la importància de les còpies de seguretat.
- Aprendre a utilitzar comandes de Bash per copiar fitxers i directoris.
- Configurar un script per executar-se automàticament amb cron.
- Implementar notificacions per assegurar que les còpies de seguretat s'han realitzat correctament.
Passos del Projecte
- Planificació de la Còpia de Seguretat
Abans de començar a escriure el script, és important planificar què es vol copiar i on es vol emmagatzemar la còpia de seguretat.
- Directoris a copiar:
/home/usuari/documents
,/home/usuari/pictures
- Destinació de la còpia de seguretat:
/mnt/backup
- Crear l'Script de Còpia de Seguretat
2.1. Estructura Bàsica de l'Script
#!/bin/bash # Directori de destinació de la còpia de seguretat DESTINATION="/mnt/backup" # Data actual DATE=$(date +%Y-%m-%d) # Crear un directori amb la data actual BACKUP_DIR="$DESTINATION/backup-$DATE" mkdir -p "$BACKUP_DIR" # Directoris a copiar DIRECTORIES=( "/home/usuari/documents" "/home/usuari/pictures" ) # Funció per copiar els directoris backup() { for DIR in "${DIRECTORIES[@]}"; do cp -r "$DIR" "$BACKUP_DIR" done } # Executar la funció de còpia de seguretat backup # Notificació de finalització echo "Còpia de seguretat completada el $DATE" | mail -s "Còpia de Seguretat" [email protected]
2.2. Explicació del Codi
- DESTINATION: Defineix el directori on es guardaran les còpies de seguretat.
- DATE: Obté la data actual en format
YYYY-MM-DD
. - BACKUP_DIR: Crea un directori nou dins de
DESTINATION
amb la data actual. - DIRECTORIES: Llista dels directoris que es copiaran.
- backup(): Funció que recorre la llista de directoris i els copia al directori de còpia de seguretat.
- mail: Envia un correu electrònic de notificació quan la còpia de seguretat s'ha completat.
- Automatitzar l'Script amb cron
3.1. Editar el Crontab
Per automatitzar l'execució de l'script, utilitzarem cron. Editem el crontab amb la comanda:
3.2. Afegir una Entrada al Crontab
Afegim una entrada per executar l'script cada dia a les 2:00 AM:
- Provar l'Script
És important provar l'script manualment abans de confiar en l'automatització per assegurar-se que funciona correctament.
- Millores i Optimitzacions
5.1. Comprimir les Còpies de Seguretat
Per estalviar espai, podem comprimir les còpies de seguretat utilitzant tar
:
5.2. Gestió d'Errors
Afegir gestió d'errors per assegurar que l'script no falla silenciosament:
backup() { for DIR in "${DIRECTORIES[@]}"; do if cp -r "$DIR" "$BACKUP_DIR"; then echo "Còpia de $DIR completada." else echo "Error copiant $DIR." | mail -s "Error de Còpia de Seguretat" [email protected] fi done }
- Resum
En aquest projecte, hem creat un sistema de còpia de seguretat automatitzat utilitzant Bash. Hem après a planificar la còpia de seguretat, escriure un script bàsic, automatitzar-lo amb cron, i implementar millores com la compressió i la gestió d'errors. Aquest sistema assegura que les dades importants estiguin protegides de manera regular i automàtica.
Curs de Programació en Bash
Mòdul 1: Introducció a Bash
- Què és Bash?
- Configuració del teu Entorn
- Navegació Bàsica per la Línia de Comandes
- Entenent la Shell
Mòdul 2: Comandes Bàsiques de Bash
- Operacions amb Fitxers i Directoris
- Comandes de Processament de Text
- Permisos i Propietat de Fitxers
- Redirecció i Piping
Mòdul 3: Conceptes Bàsics de Scripting
Mòdul 4: Scripting Intermedi
Mòdul 5: Tècniques Avançades de Scripting
- Operacions Avançades amb Fitxers
- Gestió de Processos
- Gestió d'Errors i Depuració
- Expressions Regulars
Mòdul 6: Treballant amb Eines Externes
Mòdul 7: Automatització i Programació
- Treballs Cron
- Automatització de Tasques
- Scripts de Còpia de Seguretat i Restauració
- Monitorització i Registre
Mòdul 8: Millors Pràctiques i Optimització
- Escriure Codi Llegible
- Optimització de Scripts en Bash
- Consideracions de Seguretat
- Control de Versions amb Git