PDA

View Full Version : script bash per backup


laba
02-06-2008, 09:46
Premetto che in programmazione non sono ferratissimo, ma mi piace provare a cimentarmi nella modifica di qualche script/programma in cui mi imbatto per riuscire a fare quello che mi è necessario.
Sfogliando l'ultimo numero di Linux Magazine ho visto che c'era uno script bash per compiere un'operazione che al momento ho eseguito con programmi dedicati, cioè fare il backup di alcune cartelle sensibili su un NAS di rete.
Ho letto attentamente la spiegazione del funzionamento dello script, e cambiato i campi di origine-destinazione, poi ho dato i permessi di esecuzione al file (chmod a+x) e quindi ho provato a lanciarlo. Come prima prova ho provato a replicare una cartella in un'altra su una partizione del disco.
Stranamente non accade nulla, e l'output che ottengo è questo:

./backup.sh /home/ennio/ /media/linux/FEAR/home/ [7]


questo invece è il listato dello script:
#!/bin/bash
if [[ $# -lt 2 ]]; then echo "$0 /home/ennio/ /media/linux/FEAR/home/ [7]"; exit 1; fi
local_machine=$(uname -n)
backup_directory=$1
destination=$2
number_of_days=$3
if [[ ! ${number_of_days} ]]
then
number_of_days=-7
fi
backup_file=${local_machine}_${number_of_days}days_$(date +%Y%m%d).tar.gz
if [[ ${number_of_days} -ne 0 ]]
then
time_interval="-mtime ${number_of_days}"
else
time_interval=""
fi
find ${backup_directory} -type f ${time_interval} -print0 | xargs -0 tar cvzf ${backup_file}
if [[ $(echo ${destination} | grep ":") ]]
then
copy="scp"
else
copy="cp"
fi
${copy} ${backup_file} ${destination}
Magari -anzi quasi sicuramente - l'errore è proprio una cretinata, ma non riesco a capire cosa possa andare storto.

Devil!
02-06-2008, 09:54
Ma che comando dai per avviare lo script?

Perchè dall'output che hai messo si nota che soddisfi la prima IF e quindi non hai dato tutti i parametri necessari allo script.

laba
02-06-2008, 10:13
il comando per far partire uno script non è il classico ./backup.sh ?:confused:

Devil!
02-06-2008, 10:21
eh no, se usi le variabili di input $1 $2 etc... devi aggiungere anche gli altri parametri

nel tuo caso nello script vengono definite:

backup_directory=$1
destination=$2
number_of_days=$3

quindi sarà qualcosa del tipo

./backup.sh $backup_directory $destination $number_of_days

ad esempio, come suggerito dallo script stesso:

./backup.sh /home/ennio/ /media/linux/FEAR/home/ [7]

laba
02-06-2008, 13:43
grazie mille!!! Era proprio così! non sapevo di dover dichiarare le variabili richiamando lo script, ero convinto che inserendo direttamente all'interno del file la sorgente e la destinazione avrebbe funzionato.
Ora è li che sta copiando, vediamo come va a finire.
Grazie per la pazienza, alla fine era proprio una banalità, ma almeno ho imparato una cosa nuova :)