Backup con rsync

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Backup con rsync

Messaggio 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

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Re: Backup con rsync

Messaggio 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

notsafe
Linux 2.x
Linux 2.x
Messaggi: 451
Iscritto il: mar 21 mar 2006, 11:00

Re: Backup con rsync

Messaggio da notsafe »

prova ad usare "=" al posto di "==" come operatore.

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Re: Backup con rsync

Messaggio da samiel »

gIÀ PROVATO,
MA MI DICE SEMPRE CHE IL DISCO NON È MONTATO...

m

notsafe
Linux 2.x
Linux 2.x
Messaggi: 451
Iscritto il: mar 21 mar 2006, 11:00

Re: Backup con rsync

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

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Re: Backup con rsync

Messaggio 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

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6629
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Backup con rsync

Messaggio 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
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

notsafe
Linux 2.x
Linux 2.x
Messaggi: 451
Iscritto il: mar 21 mar 2006, 11:00

Re: Backup con rsync

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

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Re: Backup con rsync

Messaggio 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

notsafe
Linux 2.x
Linux 2.x
Messaggi: 451
Iscritto il: mar 21 mar 2006, 11:00

Re: Backup con rsync

Messaggio 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

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Re: Backup con rsync

Messaggio 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

Rispondi