Newsgroup: it.comp.os.linux.sys
Titolo: Piccolo script backup

Ciao,
mi date un parere su questo piccolo e semplice script per un backup?
#! /bin/sh
# copia giornaliera della directory dati
echo "#######################################" >> 
/backup/log/backup.log
echo "Inizio Backup giornaliero \c" >> /backup/log/backup.log
date >> /backup/log/backup.log
tar cvzf /backup/giorno/backup_giornaliero_del_$(date +%F).tgz /dati
if [ $? != 0 ]
then
echo "ERRORE nella creazione del backup \c" >> /backup/log/backup.log
date >> /backup/log/backup.log
exit 1
fi
echo "Fine   Backup giornaliero \c" >> /backup/log/backup.log
date >> /backup/log/backup.log
# verifica dell'integritï¿œ del backup
echo "Inizio verifica integrita' backup \c" >> /backup/log/backup.log
date >> /backup/log/backup.log
tar -tzf /backup/giorno/backup_giornaliero_del_$(date +%F).tgz
if [ $? != 0 ]
then
echo "Errore nell'integrita' backup \c" >> /backup/log/backup.log
date >> /backup/log/backup.log
exit 1
fi
echo "Fine   verifica integrita' backup \c" >> /backup/log/backup.log
date >> /backup/log/backup.log
echo "#######################################" >> 
/backup/log/backup.log
echo " " >> /backup/log/backup.log
# elimino i backup piï¿œ vecchi di 7 giorni
find /backup/giorno/* -mtime +7 -exec rm {} \;
Grazie
ciao

 
]zac[
Le risposte su *.iniziare.* non erano sufficienti?

 Le risposte su *.iniziare.* non erano sufficienti?
Purtroppo no, non perchï¿œ non siano ok, ma semplicemente perchï¿œ vanno 
oltre le mie conoscenze e anche oltre quello che mi serve.
Grazie
ciao

 oltre le mie conoscenze e anche oltre quello che mi serve.
  Cioè, fammi capire, le risposte che hai avuto ad una domanda generica,
su un banale script di base, che hai ottenuto su *.iniziare erano oltre
le tue conoscenze e quindi fai la stessa domanda su *.sys?
:-O
  :-(
  Ciao,
-- 
Alessandro Selli 
http://alessandro.route-add.net
AVVERTENZA: i messaggi inviati a "trappola" non mi arriveranno.
WARNING: messages sent to "trappola" will never reach me.

 oltre le mie conoscenze e anche oltre quello che mi serve.
Cioe`, tu scrivi qua (che e` un gruppo il cui livello dei partecipanti 
discute di cose piu` avanzate) quando ti si e` gia` risposto su di un gruppo 
dedicato a livello base perche` non hai capito le risposte? Si, direi 
proprio che 'e` qualcosa di sbagliato nel tuo ragionamento...
Enrico

 proprio che 'e` qualcosa di sbagliato nel tuo ragionamento...
Questa ï¿œ la risposta che mi ha gentilmente dato Giuseppe:
"Se vuoi cerca scriptbackup in rete (ï¿œ in savannah), forse ti ï¿œ utile"
L'unica risposta che ho ricevuto.
Go cercato e trovato lo script che mi ha suggerito Giuseppe, ma, non 
solo va oltre le mie capacitï¿œ, mi servirebbe solo un consiglio su 
qualcosa di piï¿œ semplice, tipo quello che ho postato.
Non volevo mica disturbare.
Grazie
ciao

 Non volevo mica disturbare.
]zac[
P.S. Non � questione di disturbare, sei semplicemente fuori tema rispetto 
allo scopo principale del news group.
Comunque, visto che non vuoi utilizzare uno script di backup gi� fatto, che 
si installa com make install, che basta scrivere la lista dei file e delle 
directory di cui vuoi fare il backup, vediamo se questo estratto di 
scriptbackup ti piace:
# Set one backup for every week of mounth
    BackUpNum=$(($((`date +%-d` - 1)) / 7 + 1))
    c_BackUpDev=$c_BackUpDev"-"$BackUpNum
Quello che fa � di aggiungere al nome del backup contenuto in $c_BackUpDev 
un numero progressivo per ogni settimana di un mese.
In questo modo non serve cancellare i vecchi backup perch� vengono 
sovrascritti e si hanno 4-5 backup ognuno pi� vecchio di una settiman 
rispetto al precedente.
In sintesi in questo modo ha sempre un backup di circa un mese fa 
disponibile.

 un numero progressivo per ogni settimana di un mese.
furba come idea.
p.s.: ti toccher� ammettere che in icol.iniziare un idea del genere, 
probabilmente, non gliela avrebbero potuta suggerire.
-- 
echo onailimissaM | awk 'BEGIN { FS = "" }
{ for (i = NF; i >= 1; i-- )
   printf $i }'; echo

 probabilmente, non gliela avrebbero potuta suggerire.
Ehm. Tanto le persone che postano su icoli non posterebbero 
mai su icols e viceversa. VERO?

mallin.shetland ha scritto:

  LOL!


 le tue conoscenze e quindi fai la stessa domanda su *.sys?
Finchï¿œ non verrï¿œ cambiato il manifesto del NG non si puï¿œ nemmeno 
lamentarsi... :-(
La proposta di modifica (reinoltrata 3 volte con oggi) risale al 07/08/2007 
23:25:36
         10        20        30        40        50        60        70
          |         |         |         |         |         |         |
########################################################################
                                MANIFESTO
########################################################################
SCOPO DEL GRUPPO
    Questo gruppo si propone come uno spazio aperto e non moderato in cui
poter discutere del sistema operativo GNU/Linux e delle problematiche di
natura tecnica ad esso connesse.
    Lo scopo di questo gruppo non e` quello di fungere da help desk per i
neofiti del sistema GNU/Linux ma e` quello di offrire un'opportunita` di
confronto tra utenti esperti e amministratori di sistema.
    Di seguito  sono quindi riportati  alcuni esempi  di discussioni  che
trovano, o non trovano, la loro corretta collocazione in questo gruppo.
Esempi di argomenti adeguati ad essere trattati sul gruppo
  - la progettazione  e  l'implementazione  di  infrastrutture  basate su
    GNU/Linux
  - l'installazione  di  GNU/Linux  su  piattaforme hardware  non  comuni
  - le  modalita` per affrontare problemi di networking  usando GNU/Linux
  - discussioni sugli internals di Linux  dal punto di vista sistemistico
  - problemi di sicurezza inerenti il sistema operativo
  - tuning  del  sistema  e  comparazione  delle performance  di  diverse
    configurazioni o soluzioni
  - Problemi  di  interoperabilita`  di GNU/Linux  con  sistemi operativi
    diversi (purchï¿œ da un punto di vista tecnico)
...
Esempi di argomenti non adeguati ad essere trattati sul gruppo
  - problemi  che trovano  risposta  in una semplice  ricerca su Internet
  - problemi banali ed ampiamente documentati,  
p.es
. nelle pagine di man
  - problemi che sono gia` stati trattati in precedenza e che sono quindi
    reperibili con facilita` nello storico del gruppo
  - argomenti che trovano  una migliore collocazione in altri gruppo come
    per esempio:
    - quelli relativi  all'installazione  del sistema,  all'esecuzione di
      task comuni,  e in generale  quelli  maggiormente adatti  al gruppo
      i.c.o.l.iniziare
    - quelli specifici per le varie  distribuzioni per le quali esiste un
      gruppo dedicato (i.c.o.linux.debian, i.c.o.linux.redhat, ...)
    - quelli sulle discussioni non tecniche relative ai sistemi operativi
      (i.c.o.dibattiti)
    - quelli sulla  filosofia  del software libero  (i.c.software.libero)
    - quelli riguardanti  sistemi operativi  diversi  da GNU/Linux  e non
      relazionabili con quest'ultimo (i.c.o.win.*, i.c.o.*bsd, ...)
    - quelli sulla  programmazione  o sull'utilizzo  di software generico
      (i.c.o.linux.development, i.c.o.linux.software, ...)
...
Altre informazioni
     Per tutto quanto non esplicitato, e per quanto concerne il formato e
le modalita` di invio dei messaggi, ci si attiene a quanto stabilito nel
metamanifesto (
http://www.news.nic.it/doc/metamanifesto.html
).
#######################################################################
-- 
Flavio Visentin
Ubuntu in Zulu significa "Non so usare Debian". (cit. CtRiX)

 date >> /backup/log/backup.log
  Tenere traccia della data/ora dell'esecuzione è certamente una buona
cosa, ma:
1) visto che il comando date formatta l'output a seconda della
localizzazione, per avere un file di log con un formato standard, sempre
uguale e noto, è bene dichiarare una localizzazione precisa ad inizio di
script, ad es. LANG=C;
2) per semplificare il grepping delle (=la ricerca nelle) righe di log è
bene fare in modo che la data/ora siano all'inizio di ciascuna riga,
invece che su una riga separata successiva alla riga di log cui si
riferiscono:
echo "$(date) ERRORE $ERR nella creazione del backup \c" ...
  Se poi la tua shell di default è la bash, per farle interpretare
correttamente le sequenze di escape al suo comando interno echo bisogna
aggiungere lo switch -e:
echo -e "$(date) ERRORE $ERR nella creazione del backup \c" ...
(sicuro di voler cancellare il ritorno a capo a fine riga?)
  Infine, per evitare di dover scrivere >> "$DEST" alla fine di ogni
riga di cui vuoi catturare l'output, potresti omettere tutte queste
redirezioni e scriver una sola volta, all'inizio dello script (ma dopo
le inizializzazioni delle varibili, ovviamente):
exec >> "$DEST"
  Ciao,


     c_BackUpDev=$c_BackUpDev"-"$BackUpNum
Grazie,
veramente interessante.
Ciao

   Prima nota: /backup/log/backup.log compare 15 volte nello script.
Grazie, prendo nota di tutti gli ottimi consigli, a partire 
dall'utilizzo delle variabili.
Grazie
ciao

    LOL!
pacca sulla spalla tra ..... :-)



ve bene... tutti di dicono che sei OT, ma tutti ti rispondono.
Io volevo evitare la solita caciare e non avevo detto nulla.
1) Per quanto riguarda il file di log, noto che tu butti dentro al file 
tutto l'output di "tar tf blabl.tar"
Se fai il backup di tutta la root prima o poi il file di log ti salterï¿œ 
per aria.
Io creo file di log separati per ogni backup, e poi, ogni tot, li 
svecchio insieme ai backup ad essi associati.
Per fare ciï¿œ all'inizio dello script esporto le seguenti variabili:
LOGDIR=/backup/backup/fs/log
TIMESTAMP=$(date +%Y_%m_%d_%H.%M)
LOGFILE=${LogDir}/sdc-${TimeStamp}.log
2) Se dovesse interessarti, alcuni tool di backup onorano l'attributo 
'd', per escludere i file dal backup. Purtroppo non ï¿œ il caso di tar.
3) che filesystem utilizzi? Se utilizzi XFS ti consiglio di utilizzare 
xfs_dump, che ï¿œ piï¿œ rapido, gestisce cataloghi (puoi anche dirgli di non 
gestirli), onora gli attributi impostati con chattr, gestisce 
direttamente i backup differenziali (con tar dovresti fare prima un 'tar 
--diff' e utilizzare quindi il risultato come lista dei file di archiviare).


 'd', per escludere i file dal backup. Purtroppo non è il caso di tar.
Che fa la stessa cosa con --exclude :-)
Anzi, volendo puoi fare l'elenco dei file da non archiviare mai in un
file, e poi usare -X.
-- 
Massimo Bacilieri AKA Crononauta

 LOGFILE=${LOGDIR}/sdc-${TIMESTAMP}.log
ovviamente il nome del file di bacup conterrï¿œ anch'esso la variabile 
$TIMESTAMP
Tipo: mio-backup-${TIMESTAMP}.tar.gz


 Che fa la stessa cosa con --exclude :-)
hai ragionissima pure tu, però il 'chattr -d' è più flessibile, per una 
ragione semplicissima:
se io imposto l'attributo 'd' a una directory, tutti i file che creo 
successivamente in quella directory erediteranno l'attributo.



si va bene: l'exclude di tar, comprende anche "PATTERN".
Quindi, si equivalgono nell'uso :-)


 xfs_dump,
Utilizzo ext3, grazie comunque per il consiglio
Grazie
ciao

 Mi sono perso :-)
se usi tar fregatene di quello che ho detto. Con ext3 potresti 
utilizzare "dump", che onora quell'attributo. Tienilo in saccoccia se ti 
dovessere tornare utile un domani.


 Fai la prova: creati un tar
lascia perdere ..... non avevo visto che non avevi messo il redirect su 
'tar tf' :-)
vai tranquillo allora.


 tornare utile un domani.
Per il momento accetto il tuo consiglio, ma, se posso, a che 
servirebbe?
Escludere dal backup alcuni dei file dalla directory da backuppare?
Grazie
ciao

 Escludere dal backup alcuni dei file dalla directory da backuppare?
Come a che ti serve?
Ti serve a non fare il backup di /proc, di /tmp ... per esempio


 Ti serve a non fare il backup di /proc, di /tmp ... per esempio
Scusami, non avevo capito che ti riferivi al backutp di tutta la root.
Ovviamente in quel caso ï¿œ necessario.
Ma, nel mio caso, devo backuppare solo una directory contenente degli 
arhivi.
Grazie
ciao

 tzf" andasse in errore, no?
  Ah, allora devo farti notare che usassi il comando exec >> "$DEST" ad
inizio script ti troveresti nel file di log tutto quello che lo script
scriverebbe nello standard output.  Siccome usi il comando tar con
l'opzione "v" (--verbose), allora in questo caso nel log troveresti
anche l'elenco completo di tutti gli oggetti del filesystem che tar avrà
archiviato.  Se così va bene, bene.  Se invece vuoi che l'output di tar
sia visibile sullo standard output (in genere sul terminale) allora, per
continuare a redirigere tutto lo standard output nel file di log, devi
mandare l'output di tar altrove, ossia (in genere) verso lo standard
error.  Se così va bene, bene (rit.).  Altrimenti lo exec >> "$DEST" non
va bene.


 
No infatti, su *.iniziare.* gli avevo gi� suggerito di scaricarsi 
scriptbackup che contiene quella e altre idee, e in pi� fa gia quello che 
gli serve (era la soluzione migliore ma l'ha rifiutata).
L'altra soluzione � scaricarsi advanced bash scripting (c'� in italiano) e 
metterci insieme tanto sudore e tempo.

 metterci insieme tanto sudore e tempo.
Advanced BASH Scripting non è scritto per principianti, 
è scritto male e ci sono molti esempi sbagliati
Io in genere suggerisco questo:
http://www.tldp.org/LDP/Bash-Beginners-Guide/


bai_de_uei, advanced bash scripting si installa con una botta di 
apt-get: apt-get install abs-guide
Anche se, mi pare che potrebbe essere la versione HTML (quella dove 
bisogna andare avanti e indietro sugli hyperlink. De gustibus, ma io 
preferisco il PDF o documento equivalente).
