Come creare uno script Bash per il backup di una directory con gestione della rotazione dei vecchi backup

Effettuare backup regolari dei propri dati è una pratica essenziale per garantire la sicurezza e l'integrità delle informazioni. In questo articolo, vedremo come creare uno script Bash che esegue il backup di una directory specifica e gestisce la rotazione dei vecchi backup, mantenendo un numero definito di backup recenti e rimuovendo quelli più vecchi.

Apri il tuo editor di testo preferito e crea un nuovo file chiamato backup.sh. Inizia lo script aggiungendo la shebang e alcuni commenti per descrivere il funzionamento dello script:


#!/bin/bash

# Script di Backup con Rotazione dei Vecchi Backup
# Questo script effettua il backup di una directory specifica e gestisce la rotazione dei backup vecchi.

Definisci le variabili principali che verranno utilizzate nello script, come la directory di origine, la directory di destinazione per i backup e il numero massimo di backup da mantenere:


# Directory di origine da eseguire il backup
SOURCE_DIR="/path/to/source_directory"

# Directory di destinazione per i backup
BACKUP_DIR="/path/to/backup_directory"

# Numero massimo di backup da mantenere
MAX_BACKUPS=5

Aggiungi il codice per creare un nuovo backup. Utilizzeremo il comando tar per comprimere la directory di origine e generare un file di backup con un timestamp univoco:


# Creazione del timestamp per il nome del backup
TIMESTAMP=$(date +"%Y%m%d%H%M%S")

# Nome del file di backup
BACKUP_FILE="$BACKUP_DIR/backup-$TIMESTAMP.tar.gz"

# Creazione del backup
tar -czf "$BACKUP_FILE" "$SOURCE_DIR"

echo "Backup creato: $BACKUP_FILE"


# Controllo del numero di backup esistenti
BACKUP_COUNT=$(ls -1 $BACKUP_DIR/backup-*.tar.gz 2>/dev/null | wc -l)

# Rimozione dei backup più vecchi se il numero massimo è superato
if [ $BACKUP_COUNT -gt $MAX_BACKUPS ]; then
    DELETE_COUNT=$(expr $BACKUP_COUNT - $MAX_BACKUPS)
    echo "Rimuovendo i $DELETE_COUNT backup più vecchi..."

    # Ordinamento e rimozione dei backup più vecchi
    ls -1tr $BACKUP_DIR/backup-*.tar.gz | head -n $DELETE_COUNT | xargs rm -f
    echo "Backup vecchi rimossi."
fi

Salva il file e chiudilo. Rendi eseguibile lo script con il comando chmod:


chmod +x backup.sh

Ora puoi eseguire lo script manualmente o programmarne l'esecuzione automatica utilizzando cron. Per eseguire lo script manualmente, utilizza il seguente comando:


./backup.sh

Per eseguire lo script automaticamente a intervalli regolari, aggiungilo al crontab. Ad esempio, per eseguire il backup ogni giorno alle 2 del mattino, modifica il crontab con il comando crontab -e e aggiungi la seguente riga:


0 2 * * * /path/to/backup.sh

Conclusione

Abbiamo visto come creare uno script Bash per effettuare il backup di una directory e gestire la rotazione dei vecchi backup. Questo script può essere personalizzato ulteriormente per adattarsi alle tue esigenze specifiche, ad esempio aggiungendo notifiche via email o supporto per il backup di più directory. La gestione dei backup è un aspetto cruciale della sicurezza dei dati e automazione come questa può fare una grande differenza nella prevenzione della perdita di dati.

Torna su