Script di shell
Moderatore: Staff
Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
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.
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
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.
Script di shell
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?
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?
- aschenaz
- Staff

- Messaggi: 4623
- Iscritto il: mer 28 lug 2004, 0:00
- Nome Cognome: Nino
- Slackware: current
- Kernel: 5.4.x
- Desktop: KDE
- Località: Reggio Calabria
- Contatta:
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...
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...
-
Mario Vanoni
- Iper Master

- Messaggi: 3174
- Iscritto il: lun 3 set 2007, 21:20
- Nome Cognome: Mario Vanoni
- Slackware: 12.2
- Kernel: 3.0.4 statico
- Desktop: fluxbox/seamonkey
- Località: Cuasso al Monte (VA)
Re: Script di shell
#!/bin/shpedrus 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?
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
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.Perché vuoi tenere gli ultimi due e non solo l'ultimo?
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.
-
Mario Vanoni
- Iper Master

- Messaggi: 3174
- Iscritto il: lun 3 set 2007, 21:20
- Nome Cognome: Mario Vanoni
- Slackware: 12.2
- Kernel: 3.0.4 statico
- Desktop: fluxbox/seamonkey
- Località: Cuasso al Monte (VA)
@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
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
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?
Ma non si riesce a fare il download. Continuo a cercare.
Nel frattempo qualcuno conosce altre soluzioni?
- davide77
- Linux 2.x

- Messaggi: 359
- Iscritto il: mar 26 apr 2005, 0:00
- Desktop: xfce
- Distribuzione: XUbuntu
- Località: Bergamo
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.
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.
-
Mario Vanoni
- Iper Master

- Messaggi: 3174
- Iscritto il: lun 3 set 2007, 21:20
- Nome Cognome: Mario Vanoni
- Slackware: 12.2
- Kernel: 3.0.4 statico
- Desktop: fluxbox/seamonkey
- Località: Cuasso al Monte (VA)
ftp://ftp.netsw.org/system/tools/fileut ... all/ssync/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.FreeBSD.org/pub/FreeBSD/ports/distfiles/
Mario Vanoni
