rsync_logo

Avendo la necessità di tenere sempre una copia aggiornata dei miei dati sul PC di lavoro ho deciso di creare uno script bash che automaticamente crea una copia di backup incrementale sul mio server.

Il comando che uso è rsync, un programma che ha molte delle caratteristiche di rcp, ma con in aggiunta la possibilità di utilizzare il protocollo rsync remote-update che permette un rapido trasferimento dei file.

Ecco il mio script (backup.sh):

#!/bin/bash

COMMAND=”rsync -r -t -p -o -g -x -v –progress –delete”
SOURCE=”/home/max”
DESTINATION=”max@server.example.com:/home/max/backup”

DIR=”Documenti”
echo “$DIR”
eval $COMMAND “$SOURCE/$DIR/” “$DESTINATION/$DIR”

DIR=”.kde”
echo “$DIR”
eval $COMMAND “$SOURCE/$DIR/” “$DESTINATION/$DIR”

Il funzionamento è semplice. Ho definito innanzi tutto alcune variabili:

  • COMMAND: contiene la riga di comando per rsync con le varie opzioni
  • SOURCE: è la directory sorgente
  • DESTINATION: è la directory di destinazione, definita con il formato user@server:/destination_dir

Dopodiché è sufficiente definire la directory per la quale vogliamo effettuare il backup:

  • DIR: directory locale da sincronizzare

È possibile aggiungere più directory all’interno dello stesso script.

Rsync mette a disposizione numerose opzioni che permettono di personalizzare i backup a seconda delle proprie esigenze. Per la lista completa delle opzioni, naturalmente si farà riferimento alla pagina di manuale

man 1 rsync

Nota: per chi non lo sapesse esiste un tool grafico Grsync che rende più user friendly l’uso di questo programma.

Grsync

Una volta creato lo script sarà sufficiente renderlo eseguibile e farlo eseguire a cron a intervalli di tempo regolari e grazie all’autenticazione a chiave pubblica, lo script non chiederà la password del server ogni volta che viene eseguito.

Programmi correlati: rdiff-backup, unison

, ,