Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Aide pour script bash
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
Mala Zaba
Apprentice
Apprentice


Joined: 21 Apr 2002
Posts: 156
Location: Brossard, Qc.

PostPosted: Wed Jan 01, 2003 5:28 pm    Post subject: Aide pour script bash Reply with quote

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
View user's profile Send private message
avendesora
Veteran
Veteran


Joined: 16 Aug 2002
Posts: 1739
Location: Betelgeuse vicinity

PostPosted: Wed Jan 01, 2003 5:33 pm    Post subject: Reply with quote

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
View user's profile Send private message
Mala Zaba
Apprentice
Apprentice


Joined: 21 Apr 2002
Posts: 156
Location: Brossard, Qc.

PostPosted: Wed Jan 01, 2003 6:17 pm    Post subject: Reply with quote

ç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
View user's profile Send private message
avendesora
Veteran
Veteran


Joined: 16 Aug 2002
Posts: 1739
Location: Betelgeuse vicinity

PostPosted: Wed Jan 01, 2003 6:31 pm    Post subject: Reply with quote

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
View user's profile Send private message
Mala Zaba
Apprentice
Apprentice


Joined: 21 Apr 2002
Posts: 156
Location: Brossard, Qc.

PostPosted: Wed Jan 01, 2003 6:42 pm    Post subject: Reply with quote

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! 8O
Back to top
View user's profile Send private message
avendesora
Veteran
Veteran


Joined: 16 Aug 2002
Posts: 1739
Location: Betelgeuse vicinity

PostPosted: Wed Jan 01, 2003 6:56 pm    Post subject: Reply with quote

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
View user's profile Send private message
Mala Zaba
Apprentice
Apprentice


Joined: 21 Apr 2002
Posts: 156
Location: Brossard, Qc.

PostPosted: Thu Jan 02, 2003 5:12 am    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
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