Newsgroup: it.comp.os.linux.iniziare
Titolo: Esempio di piccolo script di backup, per niubbi e con richiesta agli esperti...

A puro scopo di allenamento anche se la necessità c'era ho provato a
realizzare uno scriptino in Bash che funziona (meno male!!!) ma che
sicuramente gli esperti correggeranno pesantemente per renderlo più
efficiente.
So già che lo script in questione non è molto efficiente perché sono sicuro
di poter automatizzare molte parti dello script stesso invece che elencare i
comandi veri e propri, ma ancora non conosco molto bene la sintassi e quindi
sono andato sulla via lunga :-)
Posto qui lo script a beneficio di chi come me si mette a giochicchiare con
Bash per ottenere qualche piccola soddisfazione, essendo il gruppo per
"iniziare", mi sembra il luogo adatto.
+++++ Begin Script +++++
#!/bin/bash
echo -n "Creazione struttura directory in corso ... "
# estrazione del nome macchina per la dir radice del backup
base=`cat /etc/HOSTNAME`
# creazione directory radice
cd /home/ssfinetti
# variabile per risparmiare fatica a scrivere...
mkdir $base
# ora le directory del backup
mkdir $base/etc
mkdir $base/etc/ppp
mkdir $base/etc/sysconfig
mkdir $base/etc/sysconfig/network-scripts
mkdir $base/etc/rc.d
mkdir $base/etc/rc.d/init.d
mkdir $base/var
mkdir $base/var/log
mkdir $base/sbin
echo " Fatto!"
# ora iniziamo la copia bruta dei files, prima etc, poi var, poi sbin
echo -n "Copia dei file in corso ... "
cp /etc/vtund.conf $base/etc/
cp /etc/pptpd.conf $base/etc/
cp /etc/hosts $base/etc/
cp /etc/modules.conf $base/etc/
cp /etc/dhcpd.conf $base/etc/
cp /etc/HOSTNAME $base/etc/
cp /etc/named.srv.conf $base/etc/
cp /etc/named.sub.zones $base/etc/
cp /etc/passwd $base/etc/
cp /etc/resolv.conf $base/etc/
cp /etc/smb.conf.local $base/etc/
cp /etc/ppp/chap-secrets $base/etc/ppp/
cp /etc/ppp/options.pptp $base/etc/ppp/
cp /etc/sysconfig/ipchains.params $base/etc/sysconfig/
cp /etc/sysconfig/ipchains.start $base/etc/sysconfig/
cp /etc/sysconfig/orig.ford_* $base/etc/sysconfig/
cp /etc/sysconfig/network-scripts/ifcfg-*
$base/etc/sysconfig/network-scripts
cp /etc/rc.d/init.d/firewall $base/etc/rc.d/init.d/
cp /etc/rc.d/init.d/vtund $base/etc/rc.d/init.d/
cp /etc/rc.d/init.d/pptpd $base/etc/rc.d/init.d/
cp /var/log/kern.log $base/var/log/
cp /var/log/secure $base/var/log/
cp /sbin/ifup-local $base/sbin/
echo "Fatto!"
# Ora realizziamo un file TarGZ contenente tutti file copiati sin'ora
# in modo da poterlo trasportare sul pc di lavoro con la possibilità
# di mantenere i permessi originali sui file e cambiarli solo al .tgz
echo -n "Creazione del file tar in corso...."
tar zcvpf $base".tgz" $base
echo "Fatto!"
# e ora il cambio permessi di proprietà del .tgz da root a ssfinetti...
echo -n "Cambio permessi da root a ssfinetti in corso..... "
chown ssfinetti $base.tgz
echo "Fatto!"
echo "Programma Terminato"
+++++ End Script +++++
Ai nuovi che non hanno mai usato uno script, avviso che i segni tra i +++
Begin e End Script +++ sono solo per il presente messaggio e non vanno nello
script :-)
Ovviamente, oltre a sperare di essere in qualche modo di aiuto a chi come me
vuole iniziare a FARE qualcosa per linux oltre che a capirlo bene, sarei
felicissimo di ricevere anche tonnellate di critiche sulla struttura di
questo script, che ripeto, è si pienamente funzionante per gli scopi che mi
prefiggevo nel farlo, ma SICURAMENTE è suscettibile di decine di
miglioramenti.
Un grazie a tutti coloro che vorranno commentarlo, anche solo per criticare
(basta che non mi si dia del Troll :-) )
--
Stefano Finetti
Lynx Automotive
sfin...@lynxtesoft.it
http://www.lynxtesoft.it

Ciao Jarsil,
io lo farei cosi':
+++++ Begin Script +++++
 
#!/bin/bash
echo -n "Creazione struttura directory in corso ... "
# mi sposto in backup
cd /usr/local/backup/
# estrazione del nome macchina per la dir radice del backup
base=`uname -n`
mkdir $base
echo " Fatto!"
# ora iniziamo la copia bruta dei files, prima etc, poi var, poi sbin
echo -n "Copia dei file in corso ... "
LISTA="/etc/vtund.conf /etc/pptpd.conf  /etc/hosts  /etc/modules.conf      \
/etc/dhcpd.conf /etc/HOSTNAME  /etc/named.srv.conf  /etc/named.sub.zones   \
/etc/passwd  /etc/resolv.conf  /etc/smb.conf.local  /etc/ppp/chap-secrets  \
/etc/ppp/options.pptp  /etc/sysconfig/ipchains.params /etc/sysconfig/ipchains.start \
/etc/sysconfig/orig.ford_*  /etc/sysconfig/network-scripts/ifcfg-* \
/etc/rc.d/init.d/firewall  /etc/rc.d/init.d/vtund \
/etc/rc.d/init.d/pptpd  /var/log/kern.log         \
/var/log/secure  /sbin/ifup-local "
for FILE in $LISTA ; do
	cp -aPuv "$FILE" ${base}/
done
echo "Fatto!"
# Ora realizziamo un file TarGZ contenente tutti file copiati sin'ora
# in modo da poterlo trasportare sul pc di lavoro con la possibilità
# di mantenere i permessi originali sui file e cambiarli solo al .tgz
echo -n "Creazione del file tar in corso...."
tar zcvpf ${base}.tgz $base
echo "Fatto!"
# e ora il cambio permessi di proprietà del .tgz da root a ssfinetti...
echo -n "Cambio permessi da root a ssfinetti in corso..... "
chown ssfinetti $base.tgz
echo "Fatto!"
 
echo "Programma Terminato"
 
+++++ End Script +++++
-- 
Pa.Ped, Como
http://www.fastflow.it/~paolop
VOTE AGAINST SPAM! 
http://www.politik-digital.de/spam/it/
Contro i brevetti software: 
http://petition.eurolinux.org/index_html