View previous topic :: View next topic |
Author |
Message |
Mala Zaba Apprentice
Joined: 21 Apr 2002 Posts: 156 Location: Brossard, Qc.
|
Posted: Wed Jan 01, 2003 5:28 pm Post subject: Aide pour script bash |
|
|
Bonjour,
J'aurais besoin d'aide pour completer un script bash. J'aimerais faire un backup de certains fichiers (qui sont mis dans un fichier) et de le mettre sur cd-rom. Mon probleme, c'est lors de la premiere ecriture et quand savoir que le cdrom n'est plus de place. Voici ou je suis rendu.
Code: | #!/bin/sh
if [ -f /etc/backup.conf ] ; then
today=`(date -I)`
config=`(cat /etc/backup.conf)`
tar cfvz /var/backup/cdr/$today.tar.gz $config
multi=`(cdrecord -msinfo dev=0,4,0)`
mkisofs -R -J -o /usr/tmp/backup-cdr.raw -C $multi -M /dev/cdroms/cdrom1 /var/backup/cdr/*
cdrecord speed=4 dev=0,4,0 -multi /usr/tmp/backup-cdr.raw
rm /usr/tmp/backup-cdr.raw
rm /var/backup/*
rm /var/backup/cdr/*
else
exit 127
fi |
Ce que je veux faire, c'est que le script soit capable de commencer un cd multisession sans que je change quoi que se soit, qu'il fasse mes copie régulières toujours en multisession et qu'il m'indique quand je dois changer de cd pour qu'il continur su un nouveau. Présentement, je sais qu'il faut que je change le cd par ce message
Code: | Total translation table size: 0
Total rockridge attributes bytes: 618
Total directory bytes: 0
Path table size(bytes): 10
Max brk space used 5000
385552 extents written (753 Mb)
scsidev: '0,4,0'
scsibus: 0 target: 4 lun: 0
Linux sg driver version: 3.1.24
Cdrecord 2.0 (i686-pc-linux-gnu) Copyright (C) 1995-2002 Jörg Schilling Using libscg version 'schily-0.7'
Device type : Removable CD-ROM
Version : 2
Response Format: 2
Capabilities : SYNC LINKED
Vendor_info : 'PLEXTOR '
Identifikation : 'CD-R PX-R412C '
Revision : '1.07'
Device seems to be: Generic mmc CD-R.
Using generic SCSI-3/mmc CD-R driver (mmc_cdr).
Driver flags : MMC SWABAUDIO
Supported modes: TAO PACKET SAO SAO/R96P SAO/R96R RAW/R16 RAW/R96P RAW/R96R
cdrecord: WARNING: Data may not fit on current disk.
cdrecord: Notice: Use -overburn option to write more than the official disk capacity.
cdrecord: Notice: Most CD-writers do overburning only on SAO or RAW mode. |
C'est là que je met un nouveau cd et je fais la premiere piste manuellement...
Présentement, j'ai 3 à 4 mois de backup par cd et je le fais une fois par mois.
Merci |
|
Back to top |
|
|
avendesora Veteran
Joined: 16 Aug 2002 Posts: 1739 Location: Betelgeuse vicinity
|
Posted: Wed Jan 01, 2003 5:33 pm Post subject: |
|
|
cdrecord doit surement renvoyer un code d'erreur quand il bloque.
Tu as essaye qqch comme ca:
Code: |
cdrecord ...
if [ $? -eq 0 ] ; then
# tout c'est bien passe
else
# cdrecord est pas content
fi
|
|
|
Back to top |
|
|
Mala Zaba Apprentice
Joined: 21 Apr 2002 Posts: 156 Location: Brossard, Qc.
|
Posted: Wed Jan 01, 2003 6:17 pm Post subject: |
|
|
ça fait quoi le $? -eq 0
j'ai essayé comme telle mais ca fonctionne pas, mais c'est une bonne idée le code d'erreur, il suffit que je trouve comment faire... C'est que je suis pas trop callé en programmation... |
|
Back to top |
|
|
avendesora Veteran
Joined: 16 Aug 2002 Posts: 1739 Location: Betelgeuse vicinity
|
Posted: Wed Jan 01, 2003 6:31 pm Post subject: |
|
|
La variable $? contient le code retour de la derniere commande executee.
En cas de succes, une command unix est supposé retourner 0, d'ou le test
$? -eq 0.
Y'a rien dans la doc de cdrecord qui te permette de faire une "simulation" ?
(i.e. juste verifier que tout va bien...) |
|
Back to top |
|
|
Mala Zaba Apprentice
Joined: 21 Apr 2002 Posts: 156 Location: Brossard, Qc.
|
Posted: Wed Jan 01, 2003 6:42 pm Post subject: |
|
|
Existe t'il une facon pour voir les variable?
Pour ce qui est de la simulation, cdrecord le permet, mais de toute facon, si j'ai plus de place, il ne grave pas, donc je ne suis pas obligé de passer par la simulation
Je sais a peu pres quoi faire... genre que quand je crée mon archive .tar, j'ai sa grosseur et je la met dans une variable. Je regarde l'espace disponible sur le cd et je fait une comparaison... En théorie c'est tres simple... le faire c'est autre chose! |
|
Back to top |
|
|
avendesora Veteran
Joined: 16 Aug 2002 Posts: 1739 Location: Betelgeuse vicinity
|
Posted: Wed Jan 01, 2003 6:56 pm Post subject: |
|
|
Tu peux faire qqch d'assez simple, je pense:
Code: |
cdrecord ... 2>&1 > cdrecord.log
grep "WARNING" cdrecord.log
if [ $? -ne 0 ] ; then
# Tout est ok
else
# pas bon
fi
|
Le "2>&1 > fichier" redirige la sortie standard+erreur vers le fichier specifie
grep recherche la chaine specifiee dans un fhicher, et renvoie 0 si elle est presente, 1 sinon.
(echo $? affiche le contenu de cette variable, mais peut l'alterer...) |
|
Back to top |
|
|
Mala Zaba Apprentice
Joined: 21 Apr 2002 Posts: 156 Location: Brossard, Qc.
|
Posted: Thu Jan 02, 2003 5:12 am Post subject: |
|
|
Bon c'est pas clean clean, mais ca d'l'air a marcher... si vous avez des commentaires, genez-vous pas
Code: | #!/bin/sh
if [ -f /etc/backup.conf ] ; then
today=`(date -I)`
config=`(cat /etc/backup.conf)`
cdrecord -toc dev=0,4,0 | grep 'track:lout' > /usr/tmp/toc.txt
cdrecord -atip dev=0,4,0 | grep 'ATIP start of lead out:' > /usr/tmp/atip.txt
cd_minutes=`(cut -c39,40 /usr/tmp/toc.txt)`
cd_minutes_total=`(cut -c35,36 /usr/tmp/atip.txt)`
tar cfvz /var/backup/cdr/$today.tar.gz $config
du /var/backup/cdr/$today.tar.gz > /usr/tmp/tar_space.txt
tar_space=`(cut -c1-3 /usr/tmp/tar_space.txt)`
tar_minutes=`expr $tar_space / 9`
minutes_total=`expr $cd_minutes + $tar_minutes`
if [ $cd_minutes str ]; then
mkisofs -R -J -o /usr/tmp/backup-cdr.raw /var/backup/cdr/*
cdrecord speed=4 dev=0,4,0 -multi /usr/tmp/backup-cdr.raw
else
if [ $minutes_total > $cd_minutes_total ]; then
echo "Le CD, pouvant avoir que $cd_minutes_total minutes, n'as pas assez d'espace." > /usr/tmp/cd_change.txt
echo "La future session prendra $tar_minutes minutes et il ne reste plus que $cd_minutes minutes sur le CD en cours." >> /usr/tmp/cd_change.txt
metasend -b -t root -s "Changement de CD pour le backup" -f /usr/tmp/cd_change.txt -m text/plain
exit 1
rm /usr/tmp/*
fi
multi=`(cdrecord -msinfo dev=0,4,0)`
mkisofs -R -J -o /usr/tmp/backup-cdr.raw -C $multi -M /dev/cdroms/cdrom1 /var/backup/cdr/*
cdrecord speed=4 dev=0,4,0 -multi /usr/tmp/backup-cdr.raw
cdrecord -toc dev=0,4,0 | grep 'track:lout' > /usr/tmp/toc.txt
cd_minutes=`(cut -c39,40 /usr/tmp/toc.txt)`
minutes_total=`expr $cd_minutes + $tar_minutes`
echo "Le CD a une capacite de $cd_minutes_total minutes." > /usr/tmp/cd_change.txt
echo "La future session sera d'environ $tar_minutes minutes." >> /usr/tmp/cd_change.txt
echo" Il ne reste plus que $cd_minutes minutes sur le CD en cours." >> /usr/tmp/cd_change.txt
metasend -b -t root -s "Changement de CD pour le backup" -f /usr/tmp/cd_change.txt -m text/plain
fi
fi
rm /usr/tmp/*
rm /var/backup/*
rm /var/backup/cdr/*
exit 0 |
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|