Pagina 1 di 1
Script di shell
Inviato: mer 21 nov 2007, 14:12
da pedrus
Ciao a tutti, ho dato un occhiata nel forum ma non mi pare ci sia nulla al riguardo.
Avrei necessità di realizzare un piccolo script di shell da poter eguire una volta al giorno.
In pratica con il comando tar verrebbe creato un archivo di backup che verrebbe memorizzato su un hd esterno via USB, il file di backup avrebbe un nome tipo backup-giorno-mese.anno.tar.
Così facendo però sull'HD esterno andrebbero ad accumularsi parecchi file di backup ognuno con una data differente. Così vorrei che nello script, ultimata la fase di backup, ci fosse un comando che rimuova, ad esempio, il backup di due giorni prima in modo tale da avere solamente i due backup più recenti. Come posso fare?
Inviato: mer 21 nov 2007, 14:23
da aschenaz
Perché vuoi tenere gli ultimi due e non solo l'ultimo?
te lo chiedo perché, nella seconda ipotesi basterebbe prima cancellare tutti i file (rm /percorso/*.tar) e poi salvare l'ultimo (tar cvf nomefile`date +%F`.tar percorso/directory).
Se proprio vuoi mantenere anche il penultimo, ci sarebbe il problema di quando questo è del mese prima. Con php risolverei facilmente, con bash, così su due piedi, mi sembra complicato...

Re: Script di shell
Inviato: mer 21 nov 2007, 14:55
da Mario Vanoni
pedrus ha scritto:Ciao a tutti, ho dato un occhiata nel forum ma non mi pare ci sia nulla al riguardo.
Avrei necessità di realizzare un piccolo script di shell da poter eguire una volta al giorno.
In pratica con il comando tar verrebbe creato un archivo di backup che verrebbe memorizzato su un hd esterno via USB, il file di backup avrebbe un nome tipo backup-giorno-mese.anno.tar.
Così facendo però sull'HD esterno andrebbero ad accumularsi parecchi file di backup ognuno con una data differente. Così vorrei che nello script, ultimata la fase di backup, ci fosse un comando che rimuova, ad esempio, il backup di due giorni prima in modo tale da avere solamente i due backup più recenti. Come posso fare?
#!/bin/sh
DIRECTORY='il_nome_dove_montato_il_disco' # e.g. /mnt/backup/disc1
HISTORY=2 # due giorni
cd ${DIRECTORY}
find -name 'backup-??-??-????.tar' -type f -mtime +${HISTORY} -exec echo {} \; # per testare lo script !!!
#find -name 'backup-??-??-????.tar' -type f -mtime +${HISTORY} -exec rm -f {} \; # per cancellare veramente, togliere il cancelletto (#) inizio riga.
exit 0
Osservazione:
in genere si nomina files simili YYYY-MM-DD.estensione,
con sort/ls sono sempre ordinati cronologicamente.
Mario Vanoni
Inviato: mer 21 nov 2007, 15:01
da pedrus
Perché vuoi tenere gli ultimi due e non solo l'ultimo?
Il backup avverrebbe automaticamente ogni giorno, e a backup avvenuto nessuno va a controllare se è andato a buon fine. Se qualcosa va storto in fase di backup si finirebbe per non averne neanche una copia.
Grazie per Mario Vanoni, farò dei test.
EDIT:
Approfitto ancora di questo topic. Il mio scopo è quello di creare delle copie di backup di alcune directory condivise con Samba in una rete con una decina di PC. Ho visto che è possibile fare backup completi e backup incrementali servendosi di tar. Ma su alcune cose ho dubbi. I backup incrementali comportano la necessità di avere un bakcup completo che poi va periodicamente ripetuto.
Io vorrei avere un unico file .tar di backup, contenente il tutto, però ogni giorno fare in modo che questo file venga aggiornato, che in pratica contengo i nuovi file aggiunti, che vengano rimossi i file eliminati e che vengano aggiornati i file che subiscono variazioni, senza però ogni volta fare un backup completo che, magari, per svariati Gbyte da prendere, archiviare e spostare sul HD esterno, assorbe tempo e risorse. In pratica avere un backup completo che ogni giorno viene aggiornato con la situazione "istantanea" del momento senza far ogni volta archiviare tutto.
I backup incrementali così come gli ho visti descritti in rete mi sembrano più comlplessi da gestire.
Inviato: mer 21 nov 2007, 15:16
da aschenaz
Ciò che a me sembra complicato, per Mario Vanoni sono due righe!
Tanto di cappello!
Inviato: mer 21 nov 2007, 16:15
da Mario Vanoni
@pedrus
Esempio come ho risolto un problema simile in ditta,
e funziona 24/7/36[56] dal 2002 non-stop tuttora.
ssync-2.3 del 2002, autore scomparso di scena, GPLv2,
si trova ancora il tar.gz in campo *BSD che lo mantengono/usano.
ssync ogni 20 minuti con crontab, confronta ~4GB di files/directories con
- un secondo HD sulla macchina principale (solo HH:10)
- una seconda macchina adibita unicamente a backup (solo HH:30)
- una terza macchina con tanti GB di disco inutilizzati (solo HH:50),
la terza macchina e` situata in un'altro piano dell'edificio (incendio)
copia files/directories nuovi
rimuove files/directories non piu` presenti, quindi cancellati
aggiorna files/directories modificati
tempo medio sui 5...7 minuti, ho un log file che registra tutto.
Unico difetto, a detta dell'autore, e notato da me,
lo hash utilizzato e` molto casuale, quindi disordinato in senso di sort(1).
Il secondo HD della macchina principale viene ogni settimana
copiato su un DVD ed archiviato in una cassaforte lontana ~30km.
Mario Vanoni
Inviato: mer 21 nov 2007, 16:48
da pedrus
Grazie per l'info. Sembrerebbe un po' incasinato ma non è male, anche se a me serve solo il backup su un hard disk esterno. Ho cercato con google e ho trovato questo link:
http://www.usinglinux.org/sysutils/ssync.html
Ma non si riesce a fare il download. Continuo a cercare.
Nel frattempo qualcuno conosce altre soluzioni?
Inviato: mer 21 nov 2007, 17:12
da davide77
Se puoi privarti del piacere del tar e avere delle copie cronologiche delle tue directory puoi guardare pdumpfs e pdumpfs-clean:
http://0xcc.net/pdumpfs/index.html.en
http://tach.arege.net/software/pdumpfs-clean/
(OK, il secondo è in cinese/giapponese/taiwanese/sarca$$o)
Con questi script puoi avere delle copie cronologiche occupando poco più spazio di quello che servirebbe per un solo backup, inoltre pdumpfs-clean ti permette di eliminare tutti i backup che non ti servono recuperando spazio per altri backup più nuovi.
Se poi ti interessa come funziona il tutto posso dirti che va a hard-link, in questo modo quando prendi i file da un backup qualsiasi sono quelli che effettivamente c'erano in quella data.
Inviato: mer 21 nov 2007, 17:18
da Mario Vanoni
pedrus ha scritto:Grazie per l'info. Sembrerebbe un po' incasinato ma non è male, anche se a me serve solo il backup su un hard disk esterno. Ho cercato con google e ho trovato questo link:
http://www.usinglinux.org/sysutils/ssync.html
Ma non si riesce a fare il download. Continuo a cercare.
Nel frattempo qualcuno conosce altre soluzioni?
ftp://ftp.netsw.org/system/tools/fileut ... all/ssync/
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/
Mario Vanoni