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

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