Uno script bash molto semplice che utilizzo per fare il backup di alcune directory dalla mia home (e non solo…) su un disco esterno (/media/archive).

Non starò qui a spiegarne il funzionamento, anche perché mi sembra comprensibilissimo. Mi limito a far notare che:

  1. viene utilizzato rsync. L’assenza dell’opzione –progress fa sì che non venga generato nessun output, l’assenza dell’opzione  –delete evita che vengano cancellati nella destinazione file non presenti nella sorgente (modificare se ritenuto opportuno, avendo sotto mano il manuale di rsync);
  2. la variabile FROM è un array che indica le directory sorgente. Una directory per riga, racchiusa tra apici, come si vede chiaramente;
  3. la variabile TO, invece, indica la directory destinazione;
  4. ho notato che lo script ha difficoltà se i nomi delle sorgenti contengono spazi, anche se agli spazi viene correttamente anteposto il carattere di escape (“\”). Non essendo per me un problema, non ho indagato sulla cosa.
#!/bin/bash

#Directory sorgente
FROM=(
	"/home/mirko/Calibre"
	"/home/mirko/Documentazioni"
	"/home/mirko/Documenti"
	"/home/mirko/Icone"
	"/home/mirko/Pacchetti"
	"/home/mirko/Server"
	"/media/crypted"
)
#Directory destinazione
TO="/media/archive"

#Colori
RED="\e[1;31m" 		# Rosso
GREEN="\e[1;32m" 	# Verde
YELLOW="\e[1;33m" 	# Giallo
Z="\e[0m" 		# Reset!

#Se la directory destinazione è scrivibile
if [ -w $TO ]; then
	#Cicla le directory sorgente
	for i in ${FROM[@]}; do
		#Se la directory sorgente è scrivibile
		if [ -r $i ]; then
			#Se la sincronizzazione è andata a buon termine
			if rsync -az ${i} $TO; then
				echo -e $GREEN"${i} sincronizzata"$Z
			#Altrimenti
			else
				echo -e $RED"${i} non sincronizzata"$Z
			fi
		#Altrimenti
		else
			echo -e $YELLOW"${i} non esiste o non è leggibile"$Z
		fi
	done
#Altrimenti
else
	echo -e $RED"$TO non è scrivibile"$Z
fi

exit 0
Espandi/comprimi Commenti

[…] il backup di questo disco ho scritto uno script bash (che prende più che ampiamente spunto da questo) da far girare all’occorrenza (eventualmente in automatico) in modo che effettui una […]

XHTML - Puoi usare questi tag: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>