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.
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.