Pagina 1 di 1

Backup con rsync

Inviato: mar 7 ago 2012, 19:36
da samiel
Ho trovato in rete alcuni script per automatizzare il backup con rsync.
Dopo qualche sistematina, ho questo script che però mi dà errore:

Codice: Seleziona tutto

#!/bin/bash

SOURCE="{~/argomentare,articoli,bibliografie,cataloghi,condominio,
copertine,cratilo,dialettica,dizionario,documenti,elisp,ermeneutica,
esperienza,ezine,fichte,filosofi,guide_debian,guide_latex,
guide_linux,guide_php,guide_slackware,html4dummies,mail,manuale,
mutt4dummies,neopositivisti,noneuclidee,novecento,protagonisti,
protagonisti_nuovo,public_html,retorica,s4d_project,sabina,sacchettino,
Scaricati,schelling,scuola,slack4dummies,slackbook,songs,storia,tesi,
texmf,tin4dummies,tractatus,xindy}"	# Directory di origine di cui fare il backup
TARGET="/media/CORSAIR"		# Directory di destinazione dove cui fare il backup
#EXCLUDE="/home/max/.rsync/exclude"	# Lista file da escludere
date=`date "+%y-%M-%D"` # Data del backup; %H_%M per avere anche l'orario
TAG="backup" # tag dei log scritti in /var/log/messages

# VERIFICA CHE IL DISCO SIA MONTATO
MOUNTED=$(df | grep $TARGET |awk '{print $6}')
if [ "$MOUNTED" == "$TARGET" ]
then
	echo "Il disco è montato: eseguo il backup"
	logger Inizio backup di $SOURCE per `hostname` -t $TAG
	rsync -rvu --progress --exclude-from=$EXCLUDE $SOURCE $TARGET/
	RSYNCERR=$?
	logger Fine backup per `hostname` rsync ha restituito $RSYNCERR -t $TAG
	exit 0
else
	echo "Il disco non è montato"
	logger Impossibile eseguire il backup di `hostname` disco non montato -t $TAG
	exit 1
fi
Lanciandolo, ricevo:

Codice: Seleziona tutto

samiel@samiel:~$ sh backup.sh 
backup.sh: 18: [: /media/CORSAIR: unexpected operator
Il disco non è montato
Ma la chiavetta USB è correttamente montata...

PS
Ometto l'opzione -a per poter fare un backup su chiavetta
formattata FAT32 di modo che sia leggibile anche nelle macchine Windows.
Giusto?

Grazie
M

Re: Backup con rsync

Inviato: mar 7 ago 2012, 20:29
da samiel
Allora, ho visto che sh supporta una sintassi limitata,
l'errore viene meno lanciando lo script con bash.
Invece lo script continua a non trovare montato il dispositivo...

M

Re: Backup con rsync

Inviato: mar 7 ago 2012, 21:51
da notsafe
prova ad usare "=" al posto di "==" come operatore.

Re: Backup con rsync

Inviato: mar 7 ago 2012, 22:00
da samiel
gIÀ PROVATO,
MA MI DICE SEMPRE CHE IL DISCO NON È MONTATO...

m

Re: Backup con rsync

Inviato: mar 7 ago 2012, 22:24
da notsafe
allora prova ad eseguirlo con "sh -x" e vedi "in debug mode" i vari step dello script: forse da li riesci a identificare il motivo dell'errore.

Re: Backup con rsync

Inviato: mer 8 ago 2012, 0:08
da samiel

Codice: Seleziona tutto

samiel@samiel:~$ bash -x backup.sh
+ SOURCE='{~/argomentare,articoli,bibliografie,cataloghi,condominio,
copertine,cratilo,dialettica,dizionario,documenti,elisp,ermeneutica,
esperienza,ezine,fichte,filosofi,guide_debian,guide_latex,
guide_linux,guide_php,guide_slackware,html4dummies,mail,manuale,
mutt4dummies,neopositivisti,noneuclidee,novecento,protagonisti,
protagonisti_nuovo,public_html,retorica,s4d_project,sabina,sacchettino,
Scaricati,schelling,scuola,slack4dummies,slackbook,songs,storia,tesi,
texmf,tin4dummies,tractatus,xindy}'
+ TARGET=/media/CORSAIR/
++ date +%y-%M-%D
+ date=12-06-08/08/12
+ TAG=backup
++ df
++ awk '{print $6}'
++ grep /media/CORSAIR/
+ MOUNTED=
+ [[ '' == \/\m\e\d\i\a\/\C\O\R\S\A\I\R\/ ]]
+ echo 'Il disco non è montato'
Il disco non è montato
++ hostname
+ logger Impossibile eseguire il backup di archivio disco non montato -t backup
+ exit 1
Vede il disco cnme non montato, non mi pare qui venga aggiunto un elemento nuovo :-(

M

Re: Backup con rsync

Inviato: mer 8 ago 2012, 1:48
da targzeta
L'errore è chiaro, questo comando non va a buon fine:

Codice: Seleziona tutto

MOUNTED=$(df | grep $TARGET |awk '{print $6}')
ma cosa dovrebbe fare? Se vuoi sapere se il disco è montato non ti basta fare:

Codice: Seleziona tutto

if grep -q $TARGET /proc/mounts
? Oppure:

Codice: Seleziona tutto

if mount | grep -q $TARGET
?

Emanuele

Re: Backup con rsync

Inviato: mer 8 ago 2012, 8:26
da notsafe

Codice: Seleziona tutto

++ df
++ awk '{print $6}'
++ grep /media/CORSAIR/
+ MOUNTED=
MOUNTED non viene valorizzato.Prova ad eseguire il comando manualmente,e verifica quale campo sta selezionando awk.

Re: Backup con rsync

Inviato: mer 8 ago 2012, 13:32
da samiel
Ho modificato lo script così:

Codice: Seleziona tutto

# VERIFICA CHE IL DISCO SIA MONTATO
if mount | grep -q $TARGET
then
	echo "Il disco è montato: eseguo il backup"
	Inizio backup di $SOURCE per `hostname` -t $TAG
#	rsync -arvu --progress --exclude-from=$EXCLUDE $SOURCE $TARGET RSYNCERR=$?
	rsync -rvu --progress $SOURCE $TARGET RSYNCERR=$?
	logger Fine backup per `hostname`: rsync ha restituito $RSYNCERR -t $TAG
	exit 0
else
	echo "Il disco non è montato"
	logger Impossibile eseguire il backup di `hostname`: disco non montato -t $TAG
	exit 1
fi
ma il risultato è sempre:

Codice: Seleziona tutto

samiel@samiel:~$ bash -x backup.sh
+ SOURCE='{~/argomentare,articoli,bibliografie,cataloghi,condominio,
copertine,cratilo,dialettica,dizionario,documenti,elisp,ermeneutica,
esperienza,ezine,fichte,filosofi,guide_debian,guide_latex,
guide_linux,guide_php,guide_slackware,html4dummies,mail,manuale,
mutt4dummies,neopositivisti,noneuclidee,novecento,protagonisti,
protagonisti_nuovo,public_html,retorica,s4d_project,sabina,sacchettino,
Scaricati,schelling,scuola,slack4dummies,slackbook,songs,storia,tesi,
texmf,tin4dummies,tractatus,xindy}'
+ TARGET=/media/CORSAIR/
++ date +%y-%M-%D
+ date=12-29-08/08/12
+ TAG=backup
+ mount
+ grep -q /media/CORSAIR/
+ echo 'Il disco non è montato'
Il disco non è montato
++ hostname
+ logger Impossibile eseguire il backup di archivio: disco non montato -t backup
+ exit 1
Eppure:

Codice: Seleziona tutto

samiel@samiel:~$ df
File system                                            1K-blocchi     Usati Disponib. Uso% Montato su
rootfs                                                   77992664  11346572  62739888  16% /
udev                                                        10240         0     10240   0% /dev
tmpfs                                                      207336       632    206704   1% /run
/dev/disk/by-uuid/226a1c04-6d9a-4bab-a705-f6dd776ea0e4   77992664  11346572  62739888  16% /
tmpfs                                                        5120         0      5120   0% /run/lock
tmpfs                                                      414672        36    414636   1% /tmp
tmpfs                                                      414672        80    414592   1% /run/shm
/dev/sda3                                               187159716 116061452  61727952  66% /home
/dev/sdb1                                               106344560  57236632  43782384  57% /mnt/archivio
/dev/sdb2                                                26716608   5639436  19737756  23% /mnt/slackware
/dev/sdb3                                                26708576  21238068   4131492  84% /mnt/ubuntu
/dev/sda1                                                25607576  19691604   5915972  77% /mnt/windows
/dev/sdc1                                                31287312   8115456  23171856  26% /media/CORSAIR 
per cio sdc1 o CORSAIR che dir si voglia c'è...
M

Re: Backup con rsync

Inviato: mer 8 ago 2012, 14:37
da notsafe

Codice: Seleziona tutto

+ TARGET=/media/CORSAIR/

Codice: Seleziona tutto

/dev/sdc1                                                31287312   8115456  23171856  26% /media/CORSAIR
TARGET deve essere /media/CORSAIR senza / finale

Re: Backup con rsync

Inviato: mer 8 ago 2012, 19:24
da samiel
Giusto, senza / finale!
Maper la selezione di directory multiple?
Come ho scritto io mi dà:

Codice: Seleziona tutto

rsync: change_dir "/home/samiel//{~/argomentare,/
con quella cosa strana /home/samiel//{~/argomentare
Mi pareva che la graffa consentisse di raggruppare velocemente
più directory...

M