Discussion:
script per snapshot dati (tendente a backup) :)
(too old to reply)
Federico Flego
2007-11-20 15:33:20 UTC
Permalink
Posso sottoporvi lo script bash che ho scritto per effettuare copia di
dati usando rsync e mantenendo un certo numero di copie precedenti
degli stessi?
Sono alle prima armi con lo scripting e mi piacerebbe avere i vostri
commenti/critiche/insulti... :)

Federico.
Federico Flego
2007-11-20 16:37:24 UTC
Permalink
Post by Federico Flego
Posso sottoporvi lo script bash che ho scritto per effettuare copia di
dati usando rsync e mantenendo un certo numero di copie precedenti
degli stessi?
Sono alle prima armi con lo scripting e mi piacerebbe avere i vostri
commenti/critiche/insulti... :)
eccolo:

#!/bin/sh

# creates a copy of 'source_dir' content in 'target_dir'.
# 'target_dir' will contain several ($BACKUPS) target directories with
timestamp appended as a suffix indicating the date when the backup was
carried out


PREFIX="backup_gardelito"
BACKUPS=4;
DATE=`date "+%Y_%m_%d"`

if [ $# != 2 ]
then
echo 2>&2 Usage: $0 source_dir target_dir
exit 1
fi


#removing (possible/multiple) trailing slashes
SRC_DIR=`dirname $1`/`basename $1`
TRG_DIR=`dirname $2`/`basename $2`


#checking existence of source directory
if [ ! -d $SRC_DIR ]
then
echo "Dir '$SRC_DIR' doesn't exist"
exit 1
fi


#checking existence of target directory
if [ ! -d $TRG_DIR ]
then
echo "Dir '$TRG_DIR' doesn't exist"
exit 1
fi

#new backup (today) dir name
NEW_BACKUP=$TRG_DIR/$PREFIX\_$DATE


#checking whether the backup was already done today
if [ -d $NEW_BACKUP ]
then
echo Backup already done today!
exit 0
fi

#creating dir for today backup (so we can check whether is the last
one among all existing backup dirs) ;)
mkdir $NEW_BACKUP


#creating a list of all backup dirs
list=(`find $TRG_DIR -type d -name "$PREFIX*" | sort `)
listn=${#list[*]}


#checking whether the current (today) backup is the last of the list
if [ $listn -gt 1 -a "${list[$listn-1]}" != "$NEW_BACKUP" ]
then
echo System clock screwed up?
exit 1
fi

#keeping just last $BACKUPs backups
let del_backn=$listn-$BACKUPS-1

for ((a=0; a <= $del_backn ; a++))
do
echo deleting ${list[$a]}
rm -fr ${list[$a]}
done


#creating current (today) backup
if [ $listn -eq 1 ]
then
echo first backup in $NEW_BACKUP
rsync -a $SRC_DIR/ $NEW_BACKUP
else
echo ${list[$listn-2]}
echo new backup in $NEW_BACKUP
rsync -a --delete --link-dest=${list[$listn-2]} $SRC_DIR/ $NEW_BACKUP
fi

exit 0
mauro
2007-11-22 11:36:20 UTC
Permalink
Post by Federico Flego
rsync -a --delete --link-dest=${list[$listn-2]} $SRC_DIR/ $NEW_BACKUP
solo una piccola considerazione su rsync.
ultimamente, su alcune macchine con quantitativi enormi di file
(mailserver con supporto maildir e accesso via imap), rsync ha dato
fuori di testa esaurendo tutta la memoria disponibile e ovviamente
collassando lui e altre applicazioni.
Mi sono divertito un po' a vedere il motivo, ed effettivamente,
all'aumentare dei file da trasferire/confrontare, l'occupazione del
ragazzo assumeva connotazioni piuttosto interessanti.... e visto dove lo
facevo girare, sono dovuto tornare di corsa al classico cp.
--
Nonsolocomputer.com
Mauro Morichi
mauro [at] nonsolocomputer [dot] com
mauro [at] nonsolocomputer [dot] it
GNU/Linux User 12521
IT Reti e Infrastrutture
Membro del Majaglug.net
Flavio Stanchina
2007-11-22 18:04:10 UTC
Permalink
Post by mauro
solo una piccola considerazione su rsync.
ultimamente, su alcune macchine con quantitativi enormi di file
(mailserver con supporto maildir e accesso via imap), rsync ha dato
fuori di testa esaurendo tutta la memoria disponibile [...]
Verifica come sono impostate le opzioni relative agli hard link. Rsync
tende a ricordarsi tutta la lista dei file, ma se gli chiedi di
riconoscere gli hard link usa ancora più memoria.

Se vuoi continuare ad usare rsync, l'unica soluzione è fare la copia a
pezzi: ovviamente file system diversi sono la prima divisione da fare,
visto che gli hard link non possono attraversare volumi diversi.
--
Ciao, Flavio
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Federico Flego
2007-11-25 12:24:57 UTC
Permalink
http://www.mikerubel.org/computers/rsync_snapshots/
Non lo preferisco al mio perchè con quello devi comunque averne un
paio di fatti
su disco e perciò consuma spazio disco.
Metti di avere 10 film su disco in alta qualità...
Ho visto il link, pensavo di averlo citato ma non l'ho fatto.
Comunque, dal basso della mia ignoranza, non mi risulta che ci sia
bisogno di un paio di backup fatti. Mi sembra invece che lo spazio
necessario corrisponda ad una copia sola + lo spazio per le differenze.
Update (2003.05.02): John Pelan writes in to suggest recycling the
oldest snapshot instead of recursively removing and then re-creating
it. This should make the process go faster, especially if your file
mv backup.3 backup.tmp
mv backup.2 backup.3
mv backup.1 backup.2
mv backup.0 backup.1
mv backup.tmp backup.0
cp -al backup.1/. backup.0
rsync -a --delete source_directory/ backup.0/
2003.06.02: OOPS! Rsync's link-dest option does not play well with J.
Pelan's suggestion--the approach I previously had written above will
result in unnecessarily large storage, because old files in backup.0
will get replaced and not linked.
Quindi se riciclo l'ultimo backup in questo modo:

mv backup.3 backup.tmp
mv backup.2 backup.3
mv backup.1 backup.2
mv backup.0 backup.1
mv backup.tmp backup.0
rsync -a --delete --link-dest=../backup.1 source_directory/ backup.0/

a me sembra che possa funzionare e che, nel caso i dati in che erano in
backup.3 non differiscano sostanzialmente dalla situazione attuale su
disco, ci sia un effettivo vantaggio nel riutilizzarli per creare quella
che sara' poi backup.0.

C'e' qualcosa che mi sfugge? Cosa c'e' di sbagliato o poco efficente i
ques'ultimo metodo?


Federico.
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Eugenio
2007-11-25 20:27:47 UTC
Permalink
........
mv backup.3 backup.tmp
rinomino ovvero "sposto" il backup.3 in backup.tmp (qui ci sono 10 film)
mv backup.2 backup.3
rinomino il backup.2 in backup.3 (qui ci sono 20 film in piu)
mv backup.1 backup.2
rinomino il backup.1 in backup.2 (qui ci sono 50 filmf in piu)
mv backup.0 backup.1
rinomino il backup.0 in backup.1 (qui ci sono 100 film in piu)
mv backup.tmp backup.0
rinomino il backup.tmp in backup.0 (qui ci sono [appunto...] 10 film)
rsync -a --delete --link-dest=../backup.1 source_directory/ backup.0/
sincronizzo la directory di backup con le sole differenze che trovo al
momento (metti caso altri 150 film in piu)....
a me sembra che possa funzionare.....
per funzionare funziona, solo che tu ti ritrovi con 180 film (piu gli
ultimi 150 dell'ultimo backup) sul disco.
E' vero che "sposti" i backup di un posto, ma in realtà e' come ne
avessi almeno 2 pieni delle "sole differenze". Ma se le differenze
sono file da 4 o 5 gia l'uno....

Se invece fai il backup sopra al precedente ti rimangono solo gli ultimi 10 film
piu' il rinnovo dell'ultimo backup fatto, quindi i 10 film piu
eventualmente la differenza dell'ultimo backup fatto (i 150 film!)
:-P

........
C'e' qualcosa che mi sfugge?
no, è questione di scelte personali
Cosa c'e' di sbagliato o poco efficente i
ques'ultimo metodo?
per un desktop casalingo non lo preferisco. Forse per un piccolo
server, ma non sono la persona più adatta a cui chiederlo. :-)
Federico.
ciao Eugenio
Federico Flego
2007-11-26 08:47:05 UTC
Permalink
Scusa se insisto Eugenio (e mi scuso con la lista!),
ma nel voglio capire a fondo la questione. Provo a simulare
la creazione delle snapshot cosi' mi puoi (potete) indicare esattamente dove
il mio ragionamento faccia acqua:

se nella directory della quale voglio creare la snapshot ho
10 film e ne aggiungo altri 10 ogni giorno dovrei avere:

giorno 1:

backup.0 (copia dei 10 film)
...f1
...f2
...
...f10

giorno 2:

mv backup.0 backup.1 (rinomina dir, costo nullo)
backup.0 (creazione di hard links (*) dei primi 10 film, costo quasi nullo)
(+ copia di altri 10 film)
...f1*
...f2*
...
...f10*
...f11
...f12
...
...f20

giorno 3:

mv backup.1 backup.2 (rinomina dir, costo nullo)
mv backup.0 backup.1 (rinomina dir, costo nullo)
backup.0 (creazione di hard links (*) dei primi 20 film, costo quasi nullo)
(+ copia di altri 10 film)
...f1*
...f2*
...
...f10*
...f11*
...f12*
...
...f20*
...f21
...f22
...
...f30

giorno 4:

mv backup.2 backup.3 (rinomina dir, costo nullo)
mv backup.1 backup.2 (rinomina dir, costo nullo)
mv backup.0 backup.1 (rinomina dir, costo nullo)
backup.0 (creazione di hard links (*) dei primi 30 film, costo quasi nullo)
(+ copia di altri 10 film)
...f1*
...f2*
...
...f10*
...f11*
...f12*
...
...f20*
...f21*
...f22*
...
...f30*
...f31
...f32
...
...f40

giorno 5:

mv backup.3 backup.tmp (rinomina dir, costo nullo)
mv backup.2 backup.3 (rinomina dir, costo nullo)
mv backup.1 backup.2 (rinomina dir, costo nullo)
mv backup.0 backup.1 (rinomina dir, costo nullo)
mv backup.tmp backup.0 (rinomina dir, costo nullo, ci sono i primi 10 film)
backup.0 (creazione di hard links (*) dal 20 al 40 film, costo quasi nullo)
(+ copia di altri 10 film)
...f1*
...f2*
...
...f10*
...f11*
...f12*
...
...f20*
...f21*
...f22*
...
...f30*
...f31*
...f32*
...
...f40*
...f41
...f42
...
...f50


In questo *particolare* caso sul disco di 'backup' e' presente solo una
copia fisica per ognuno dei 50 film e lo spazio occupato complessivamente
e' pari a 40 film + spiccioli per i links.

Ovviamente il discorso cambia radicalmente se ogni giorno il numero di film
aumenta di 10 ma tutti i film sono diversi dai film presenti sul disco
il giorno precedente
(caso peggiore).
In questo caso lo spazio su disco e' pari alla somma dei film che sono
passati sul tuo
disco negli ultimi 4 giorni (100 film).

E in questo caso mi chiederei come fai a vederti 10 film al giorno e
poi, comunque,
a questo ritmo di download, rischi che ti mettano dentro! (attenzione
che Sarkozy rischia
di fare scuola :) )
Post by Federico Flego
a me sembra che possa funzionare e che, nel caso i dati in che erano in
backup.3 non differiscano sostanzialmente dalla situazione attuale su
disco, ci sia un effettivo vantaggio nel riutilizzarli per creare quella
che sara' poi backup.0.
considero che i cambiamenti sul mio disco in un arco di tempo ragionevolmente
breve (> 1 mese) non siano sostanziali e comunque non penso che il
contenuto del mio
disco cambi completamente da una snapshot all'altra...

Rimane il discorso che non ho capito l'appunto di Rubel

http://www.mikerubel.org/computers/rsync_snapshots/

riguardo il fatto che rsync non sia adatto nel caso si utilizzi il
"suggerimento" di
J. Pelan's per quanto riguarda il riciclo della dir backup.3...

????

Federico.
Eugenio
2007-11-26 18:17:35 UTC
Permalink
Il 26/11/07, Federico Flego<flego.federico-***@public.gmane.org> ha scritto:
...........
Post by Federico Flego
In questo *particolare* caso sul disco di 'backup' e' presente solo una
copia fisica per ognuno dei 50 film e lo spazio occupato complessivamente
e' pari a 40 film + spiccioli per i links.
Ma, insomma, con il comando "mv" hai o non hai cambiato il nome di
cose che *hai* ancora sul disco??

Se lo fai per 4 giorni di seguito quelle cose si sono mosse da sole dal disco?
No. Quindi le *hai* ancora sul disco. (=consumo di spazio disco)

Il mio backup fa la copia delle sole differenze riscontrate rispetto
al giorno prima.
E' una esemplificazione del tuo senza i "mv".
E se nel frattempo ho cancellato 30 film, *quelli* non li ho.
..............
Post by Federico Flego
E in questo caso mi chiederei come fai a vederti 10 film al giorno e.....
Questo trascende l'esempio.

I film sono solo un esempio per far inquadrare il discorso sulla
quantità (tra l'altro non ne scarico mai!).
Ovvio che piccoli file di testo sono meno "capibili".

Prendi un altro esempio, prendi una società di Housing.
Li la quantità e' decisamente rilevante.

Credo comunque che il thread stia diventando decisamente lungo...

eugenio
Federico Flego
2007-11-26 18:26:17 UTC
Permalink
Post by Eugenio
Credo comunque che il thread stia diventando decisamente lungo...
Hai ragione su tutto, ti chiedo scusa.

Federico.
Post by Eugenio
eugenio
Marco Moser
2007-11-21 09:26:56 UTC
Permalink
Post by Federico Flego
Posso sottoporvi lo script bash che ho scritto per effettuare copia di
dati usando rsync e mantenendo un certo numero di copie precedenti
degli stessi?
mai provato rsnapshot ?
Federico Flego
2007-11-21 10:06:19 UTC
Permalink
Post by Marco Moser
Post by Federico Flego
Posso sottoporvi lo script bash che ho scritto per effettuare copia di
dati usando rsync e mantenendo un certo numero di copie precedenti
degli stessi?
mai provato rsnapshot ?
in effetti e' quello che vorrei ottenere io. Ho dato una scorsa alla
documentazione ma non ho capito se e' possibile lanciarlo fuori da
cron e cioe' solo quando viene rilevato l'inserimento del disco
esterno... ?

Federico.
Flavio Visentin
2007-11-21 11:54:49 UTC
Permalink
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Post by Federico Flego
in effetti e' quello che vorrei ottenere io. Ho dato una scorsa alla
documentazione ma non ho capito se e' possibile lanciarlo fuori da
cron e cioe' solo quando viene rilevato l'inserimento del disco
esterno... ?
Ovviamente sì, facendo uno script e configurando opportunamente udev.

- --
Flavio Visentin
GPG Key: http://www.zipman.it/gpgkey.asc

There are only 10 types of people in this world:
those who understand binary, and those who don't.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHRByJusUmHkh1cnoRAsDHAJsGiEl0WYgse5nZYEp/mHpQopYPBQCfWfHt
OYzfuLCHcxGyCzQElSNxdPs=
=jjq3
-----END PGP SIGNATURE-----
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Giuliano Natali
2007-11-22 08:48:57 UTC
Permalink
Post by Federico Flego
in effetti e' quello che vorrei ottenere io. Ho dato una scorsa alla
documentazione ma non ho capito se e' possibile lanciarlo fuori da
cron e cioe' solo quando viene rilevato l'inserimento del disco
esterno... ?
Ti hanno parlato di udev in lista e se guardi la documentazione trovi:

http://reactivated.net/writing_udev_rules.html

Running external programs upon certain events

Yet another reason for writing udev rules is to run a particular program
when a device is connected or disconnected. For example, you might want to
execute a script to automatically download all of your photos from your
digital camera when it is connected.

Do not confuse this with the PROGRAM functionality described above.
PROGRAM is used for running programs which produce device names (and they
shouldn't do anything other than that). When those programs are being
executed, the device node has not yet been created, so acting upon the
device in any way is not possible.

The functionality introduced here allows you to run a program after the
device node is put in place. This program can act on the device, however
it must not run for any extended period of time, because udev is
effectively paused while these programs are running. One workaround for
this limitation is to make sure your program immediately detaches itself.

Here is an example rule which demonstrates the use of the RUN list
assignment:

KERNEL=="sdb", RUN+="/usr/bin/my_program"

When /usr/bin/my_program is executed, various parts of the udev
environment are available as environment variables, including key values
such as SUBSYSTEM. You can also use the ACTION environment variable to
detect whether the device is being connected or disconnected - ACTION will
be either "add" or "remove" respectively.


Diaolin
--
e ‘l sòn che ‘mbraga ‘l bosc
‘l te sluse dent ‘ndei oci
lasando a chi te varda
quel dolc che sès de dent

Giuliano
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Federico Flego
2007-11-23 10:57:20 UTC
Permalink
Si, in effetti e' un mio difetto! La prendo come una tirata
d'orecchi... affettuosa!
Post by Giuliano Natali
Post by Federico Flego
in effetti e' quello che vorrei ottenere io. Ho dato una scorsa alla
documentazione ma non ho capito se e' possibile lanciarlo fuori da
cron e cioe' solo quando viene rilevato l'inserimento del disco
esterno... ?
http://reactivated.net/writing_udev_rules.html
Running external programs upon certain events
[....]

Grazie della (ri)segnalazione! in effetti ci ho giocato un po' sia con udev
che con rsnapshot.


******UDEV_START******

Per quanto riguarda udev, non riesco a capire come fare a lanciare uno script
in background. Ho fatto la seguente prova:

esguo: udevcontrol log_priority=info

nelle regole udev, per la mia device imposto:

RUN+="/bin/sh /usr/local/bin/prova_udev.sh &"

'prova_udev.sh' al suo interno esegue:

sleep 60
exit 0

esguo: udevtrigger e osservo in '/var/log/messages'


Nov 23 10:58:46 gardel udevd-event[19913]: run_program: '/bin/./sh
/usr/local/bin/prova_udev.sh &'
[...]
Nov 23 10:59:46 gardel udevd-event[19913]: run_program: '/bin/./sh'
returned with status 0


Lo stesso succede senza l'utilizzo della '&'.
Visto che 'man udev' dice:

"Running an event process for a long period of time may block all further events
for this or a dependent device. Long running tasks need to be immediately
detached from the event process itself."

e considerato che creare l'operazione di 'backup' puo' richiedere molto tempo,
qualcuno sa dirmi come fare ad esegure da udev uno script in background?

******UDEV_END******



******RSYNC_START******

Tornando a rsnapshot invece, recapitolando, io voglio che venga fatto una
snapshot (massimo una) al giorno all'inserimento del hd esterno. Se un giorno
non inserisco l'hard disk, amen, se un altro giorno lo inserisco e lo
tolgo 15 volte,
la snapshot dev'essere creata solo la prima volta.

Udev mi permette di lanciare un programma. Se lancio rsnapshot "fuori da cron"
(per questo la domanda mal posta) devo poterlo fermare nel caso nello stesso
giorno abbia gia' creato una snapshot. Se non ho capito male
(maledetta fretta! :) )
le opzioni 'interval' di rsnapshot sono state create pensando
all'utilizzo di cron
per dettare i tempi. Ossia rsnapshot non ha idea di che ora, giorno,
mese, anno sia.

Infatti, ho provato ad eseguire manualmente rsnapshot piu' volte in
rapida successione
e mi crea piu' directory del tipo hourly.?, daily.?, weekly/?, ecc. in funzione
che lo chiami con l'opzione, appunto, hourly.?, daily.?, weekly.?, ecc

Praticamente le opzioni hourly.?, daily.?, weekly/?, ecc. di rsnapshot servono
solo per gestire le rotazioni delle directory.

Quindi *mi sembra* di avere principalmente 2 soluzioni:


**La prima:

da udev lancio rsnapshot. In '/etc/rsnapshot.conf' imposto che esegua
solo backup
'daily' (sarebbe lo stesso impostare solo 'hourly', o altre).

Imposto 'cmd_preexec' in modo tale che venga eseguito uno script che monti il
disco, controlli la data dell'ultimo backup, e che 'killi' il processo
di rsnapshot
se la data coincide con la data odierna. Altrimenti, devo ancora
capire come si fa,
mostra un messaggio in una finestra che avvisi di non staccare la device.

Poi, sempre in '/etc/rsnapshot.conf', imposto 'cmd_postexec' in modo
tale che a fine
copia, mi smonti la device e tolga il messaggio di cui sopra.

Inoltre devo creare un file con le dir da includere e uno con le dir
da escludere e impostare
i relativi path dove risiedono sempre in '/etc/rsnapshot.conf'. **

**La seconda:

metto tutto in un unico script dove includo le pre e post operazioni
che ho descritto
sopra e uso rsync (come nello script che avevo postato) per ogni 'source_dir'
specificata all'interno nello script stesso. **




La prima soluzione mi sembra un po' un accrocchio, anche se essendo
alle prime armi con Linux,
shell scripting, ecc., rsnapshot e' sicuramente piu' affidabile.
Inoltre sarebbe composta da 5(+udev_rule) file di configurazione,
contro uno solo(+udev_rule)
della seconda soluzione. Cosa ne pensate?

******RSYNC_END******
Lele Gaifax
2007-11-23 11:26:33 UTC
Permalink
On Fri, 23 Nov 2007 11:57:20 +0100
Post by Federico Flego
della seconda soluzione. Cosa ne pensate?
Che stai complicando una faccenda facile :-)

Visto che sei tu a decidere quando attacchi il disco [per lasciarcelo
attaccato il tempo sufficiente al "backup"] non è più opportuno e
semplice che sia sempre tu a pigiare un tastino che lancia
l'operazione?

Se così non fosse, dovrai preoccuparti anche di gestire vari "corner
cases", tipo quando il disco venga attaccato per un periodo troppo
breve, inceppando così la snapshot.

Ragionevolmente lavoreresti così:

a. se esiste "/discoesterno/snapshot-$OGGI" non fare nulla e esci
b. se esiste "/discoesterno/snapshot-in-corso", rimuovila
c. lanci rsnapshot affinché scriva in /discoesterno/snapshot-in-corso
d. se tutto è andato bene, rinomini la "snapshot-in-corso" in
"snapshot-$OGGI".
e. se invece s'è inceppato qualcosa, manda una mail, o quanto meno
scrivi nel log di sistema il problema.

ciao, lele.
--
nickname: Lele Gaifax | Quando vivrò di quello che ho pensato ieri
real: Emanuele Gaifas | comincerò ad aver paura di chi mi copia.
lele-***@public.gmane.org | -- Fortunato Depero, 1929.
Federico Flego
2007-11-23 11:45:19 UTC
Permalink
Post by Lele Gaifax
On Fri, 23 Nov 2007 11:57:20 +0100
Post by Federico Flego
della seconda soluzione. Cosa ne pensate?
Che stai complicando una faccenda facile :-)
UCAF! :)
Post by Lele Gaifax
Visto che sei tu a decidere quando attacchi il disco [per lasciarcelo
attaccato il tempo sufficiente al "backup"] non è più opportuno e
semplice che sia sempre tu a pigiare un tastino che lancia
l'operazione?
Aggrappatevi ai braccioli delle vostre sedie, sto per dirvi una cosa che vi
fara' rabbrividire :) :

sul disco esterno ci metterei anche musica, film e altro, quindi verrebbe usato
in piu' occasioni, senza regolarita'.

Voi direte: un disco di backup dev'essere usato solo per il backup!

lo so, ma a me interessa solo che se ne esplode uno, di avere i dati sull'altro
e viceversa. Che non siano backup aggiornati al millesimo di secondo, o di
non poter recuperare la loro versione di un anno indietro non mi interessa...
anche se avere 'qualche' copia di 'qualche' giorno prima con il sistema degli
hard links non fa male!
Per intenderci i dati in questione non sono dati di lavoro...

La mia idea e' che le snapshot di /home, /etc, /data/photo, ecc.
vengano fatte in
automatico, con l'unico accorgimento di impegnare la device in modo esclusivo,
avvisare di non staccarla mentre viene fatta la copia, disimpegnarla,
tutto in automatico.
Ho buone ragioni per credere (visto il tipo d'utilizzo del computer) che questa
operazione sia ragionevolmente breve nel 99% dei casi.
Post by Lele Gaifax
Se così non fosse, dovrai preoccuparti anche di gestire vari "corner
cases", tipo quando il disco venga attaccato per un periodo troppo
breve, inceppando così la snapshot.
a. se esiste "/discoesterno/snapshot-$OGGI" non fare nulla e esci
b. se esiste "/discoesterno/snapshot-in-corso", rimuovila
c. lanci rsnapshot affinché scriva in /discoesterno/snapshot-in-corso
d. se tutto è andato bene, rinomini la "snapshot-in-corso" in
"snapshot-$OGGI".
e. se invece s'è inceppato qualcosa, manda una mail, o quanto meno
scrivi nel log di sistema il problema.
i punti c) e d) non li avevo pensati. Ottima idea, grazie Lele!

Rimane il problema di capire come fare a mettere uno script in background
da ude
Giuliano Natali
2007-11-23 12:14:25 UTC
Permalink
Con amorevole cura Federico Flego ha scritto:
.................................................................................
.................................................................................
.................................................................................
.................................................................................
Post by Federico Flego
qualcuno sa dirmi come fare ad esegure da udev uno script in background?
nohup????
:-)
Diaolin
--
e ‘l sòn che ‘mbraga ‘l bosc
‘l te sluse dent ‘ndei oci
lasando a chi te varda
quel dolc che sès de dent

Giuliano
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Federico Flego
2007-11-23 12:57:51 UTC
Permalink
................................................................................. :)
Post by Federico Flego
qualcuno sa dirmi come fare ad esegure da udev uno script in background?
nohup????
:-)
Grazie Giuliano,

ho lo stesso problema che con /bin/sh. Non so perche' ma udev non
considera la '&' e
quindi in questo caso aspetta che sia nohup a terminare, cosa che non fa
fino a quando non termina lo script che chiama.

Ho provato sia

RUN+="/usr/bin/nohup /usr/local/bin/prova_udev.sh &"

che

RUN+="/usr/bin/nohup /usr/local/bin/prova_udev.sh \&"

senza successo... 'googlato' assai ma idem con patate :(

Federico.
Federico Flego
2007-11-23 13:21:53 UTC
Permalink
Post by Federico Flego
qualcuno sa dirmi come fare ad esegure da udev uno script in background?
Queste righe all'inizio del mio script chiamato da udev risolvono il problema:

if [ "x$1" != "x--" ]; then
$0 -- >> $LOG_FILE 2>&1 &
exit 0
fi

La prima chiamata dello script fa si che lo script venga rieseguito in
background e ritorni subito il comando a udev.
Verificato il log di udev e, forse non e' molto ortodosso, ma funziona!

Se qualcuno ha un'idea migliore...

Federico.
Flavio Visentin
2007-11-23 22:26:56 UTC
Permalink
Post by Federico Flego
if [ "x$1" != "x--" ]; then
$0 -- >> $LOG_FILE 2>&1 &
disown $!
Post by Federico Flego
exit 0
fi
Se qualcuno ha un'idea migliore...
Io consiglio di fare il disown del processo per evitare che restino cose appese.
man bash

- --
Flavio Visentin
GPG Key: http://www.zipman.it/gpgkey.asc

There are only 10 types of people in this world:
those who understand binary, and those who don't.
Giuliano Natali
2007-11-23 14:16:01 UTC
Permalink
Post by Federico Flego
RUN+="/usr/bin/nohup /usr/local/bin/prova_udev.sh &"
Una cazzata...

<deficient mode on>
RUN+="echo "/usr/local/bin/prova_udev.sh &" |at now+1 min"
</>

pero' non si sa' mai
:-)
Ciao
--
e ‘l sòn che ‘mbraga ‘l bosc
‘l te sluse dent ‘ndei oci
lasando a chi te varda
quel dolc che sès de dent

Giuliano
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Federico Flego
2007-11-23 15:08:19 UTC
Permalink
Post by Giuliano Natali
Post by Federico Flego
RUN+="/usr/bin/nohup /usr/local/bin/prova_udev.sh &"
Una cazzata...
<deficient mode on>
RUN+="echo "/usr/local/bin/prova_udev.sh &" |at now+1 min"
</>
Niente da fare... ci sono dei problemi con le i simboli " & |
Ho provato a 'proteggerli' ma niente da fare. Nel log di udev
appare sempre il comando troncato...

Grazie comunque! Mi sa che mi tengo la versione dello script che
chiama se stesso...

Federico.

PS: sei ancora in <deficient mode>?
:)
Giuliano Natali
2007-11-23 14:18:21 UTC
Permalink
Post by Federico Flego
................................................................................. :)
Post by Federico Flego
qualcuno sa dirmi come fare ad esegure da udev uno script in
background?
nohup????
:-)
Grazie Giuliano,
ho lo stesso problema che con /bin/sh. Non so perche' ma udev non
considera la '&' e
quindi in questo caso aspetta che sia nohup a terminare, cosa che non fa
fino a quando non termina lo script che chiama.
Ho provato sia
RUN+="/usr/bin/nohup /usr/local/bin/prova_udev.sh &"
oppure metti la & dentro prova_udev.sh

RUN+="/usr/local/bin/lanciaquelpigoz"

#lanciaquelpigoz
#!/bin/sh
/usr/bin/nohup /usr/local/bin/prova_udev.sh &


Diaolin
--
e ‘l sòn che ‘mbraga ‘l bosc
‘l te sluse dent ‘ndei oci
lasando a chi te varda
quel dolc che sès de dent

Giuliano
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request-***@public.gmane.org
Continue reading on narkive:
Loading...