Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/09/2008, à 09:08

furious-therapy

[RÉSOLU]Backup en bash >> retour d' erreur dans le log

Bonjour tous le monde!
Je viens de faire un petit backup en bash dans le cadre de mon taf, toutes les action de déplacement de fichiers sont logués mais les messages d' erreur ne le sont pas...
J'ai essayé de trouver via la recherche googelisée mais je n'ai rien trouvé dans ce sens, inutile de préciser que je débute en bash big_smile !
Voici le chef d' oeuvre (hem^^!):

#! /bin/bash
clear;
echo "*******************************";
echo "*bienvenue dans l'utilitaire  *";
echo "*de sauvegarde...             *";
echo "*******************************";
echo "Verifiez que le disk dur externe est bien branché sur le pc Agent de Bureau et allumé";
echo "Appuyez sur la touche 'entrée' quand vous êtes prêt(e)";
echo "Maintenez la touche 'ctrl' enfoncée et apppuyez sur la touche 'c' pour annuler"
read a;
clear;
echo "Vérification du réseau";
echo "Votre Mot de passe peu vous être demandé...";
##On vérifie que le disque dur externe est branché
sudo mount -a;
##création du fichier log, le précédant est détrui
LOG=~/Desktop/backup.log;
rm $LOG;
clear
echo "Création du fichier de log";
touch -f $LOG;
##on indique la date et l'heure
echo "Backup comencé le:" >>$LOG;
date --date "now" +%D >>$LOG;
echo "à: ">>$LOG;
date --date "now" +%T >>$LOG;
##supression des anciens fichiers
echo "Suression des anciens fichiers";
echo "Suression des anciens fichiers">>$LOG;
rm -r -v /media/disk/fred >>$LOG;
rm -r -v /media/disk/mathilde >>$LOG;
rm -r -v /media/disk/Val >>$LOG;
echo "" >>$LOG; 
echo "********************" >>$LOG;
echo "********************" >>$LOG;
echo "********************" >>$LOG;
echo "" >>$LOG;
##backup des fichiers
echo "Backup des fichiers en cours, patientez...";
echo "Backup des fichiers en cours" >>$LOG;
##backup pour fred
echo "Backup des fichiers pour Fred";
echo "Backup des fichiers pour Fred" >>$LOG;
cp -r -v "/home/furious-therapy/Desktop/fred" /media/disk/ >>$LOG;
echo "" >>$LOG;
echo "********************" >>$LOG;
echo "" >>$LOG;
##backup pour Val
clear;
echo "Backup des fichiers en cours, patientez...";
echo "Backup des fichiers pour Val";
echo "Backup des fichiers pour Val" >>$LOG;
cp -r -v  "/media/pc_coordination/Bureau/VAL" /media/disk/ >>$LOG;
echo "" >>$LOG;
echo "********************" >>$LOG;
echo "" >>$LOG;
clear;
echo "Backup des fichiers en cours, patientez...";
echo "Backup des fichiers pour le conseil d' administration" >>$LOG;
echo "Backup des fichiers pour le conseil d' administation" >>$LOG;
cp -v  "/home/furious-therapy/Desktop/fred/bilan hebdo Fred.xls" "/home/furious-therapy/Desktop/Conseil d' administration" >>$LOG;
cp -v  "/media/pc_coordination/Bureau/VAL/bilan hebdo Val.xls" "/home/furious-therapy/Desktop/Conseil d' administration" >>$LOG;
echo "" >>$LOG;
echo "********************" >>$LOG;
echo "" >>$LOG;
##backup pour Coordination
clear;
echo "Backup des fichiers en cours, patientez...";
echo "Backup des fichiers pour Coordination";
echo "Backup des fichiers pour Coordination" >>$LOG;
cp -r -v  "/media/pc_coordination/Coordination" /media/disk/ >>$LOG
##message de fin;
echo "********************" >>$LOG;
echo "Backup terminé à:" >>$LOG;
date --date "now" +%T>> $LOG;
clear;
echo "Backup terminé... ";
echo "Un fichier 'backup.log' est enregistré sur votre bureau";

Quelqu' un peut il éclairer ma lanterne sur la manière de faire rentrer les messages d' erreur (erreur d'entrée-sortie etc...) dans le log?
Merci d' avance
Fufu

Dernière modification par furious-therapy (Le 12/09/2008, à 12:07)


Fbpanel FR pour Bee
Installation Emu 404
Verrouillage/déverrouillage pc avec une clé usb

Hors ligne

#2 Le 12/09/2008, à 09:12

Totor

Re : [RÉSOLU]Backup en bash >> retour d' erreur dans le log

Bonjour,

Il te faut rediriger la sortie d'erreur vers la sortie standard.
Exemple :

cp -r -v  "/media/pc_coordination/Bureau/VAL" /media/disk/ 2>&1 >>$LOG;

Dernière modification par Totor (Le 12/09/2008, à 09:12)


-- Lucid Lynx --

Hors ligne

#3 Le 12/09/2008, à 09:27

furious-therapy

Re : [RÉSOLU]Backup en bash >> retour d' erreur dans le log

oké oké!
Merci de ta réponse Totor wink !
Je vais tester ça aujourd' hui et surtout voire à quoi correspond exactement le fameux "2>&1" histoire de comprendre et pas copier bêtement
Cordialement,
Fufu


Fbpanel FR pour Bee
Installation Emu 404
Verrouillage/déverrouillage pc avec une clé usb

Hors ligne

#4 Le 12/09/2008, à 09:40

Alain.g

Re : [RÉSOLU]Backup en bash >> retour d' erreur dans le log

Bonjour

Pour ajouter le message d'erreur à $LOG :

cp truc bidule 2>> $LOG

plus d'infos : http://abs.traduc.org/abs-5.3-fr/ch19.html


Xubuntu Karmic !

Hors ligne

#5 Le 12/09/2008, à 11:28

furious-therapy

Re : [RÉSOLU]Backup en bash >> retour d' erreur dans le log

Salut et merci à toi Alain.g !
Grace à toi j'ai pu comprendre la géstion des sorties...
Au final ce qui m'interessera sera

&>$LOG;

^^
Cordialement,
Fufu

Dernière modification par furious-therapy (Le 12/09/2008, à 11:29)


Fbpanel FR pour Bee
Installation Emu 404
Verrouillage/déverrouillage pc avec une clé usb

Hors ligne

#6 Le 12/09/2008, à 11:58

furious-therapy

Re : [RÉSOLU]Backup en bash >> retour d' erreur dans le log

Finalement ce sera

2>>$LOG

Car bizarement si je mets "&>$LOG" au lignes "cp" et "rm" les

echo "Phrase truce machin" >>$LOG

n'apparaisent pas ( lol !?!)...


Fbpanel FR pour Bee
Installation Emu 404
Verrouillage/déverrouillage pc avec une clé usb

Hors ligne

#7 Le 13/09/2008, à 05:16

Alain.g

Re : [RÉSOLU]Backup en bash >> retour d' erreur dans le log

Rien de bizarre : > redirige vers le fichier en écrasant, alors que >> redirige en ajoutant.

Donc au lieu de &>, on pourrait vouloir faire &>>, mais comme c'est indiqué dans la page dont j'ai donné le lien, cela génère une erreur.
Un peu plus bas, une solution est donnée :

Plusieurs flux de sortie peuvent être redirigés vers un fichier.

ls -yz >> commande.log 2>&1

ce qui t'intéresse, c'est donc >> $LOG 2>&1
À noter que 2>&1 >> qu'a donné Totor ne fonctionne pas : cela «affiche un message d'erreur et n'écrit pas dans le fichier»


Remarque d'un autre ordre : il est possible de former un groupe de commandes et d'en rediriger d'un coup la sortie.
Au lieu de faire par exemple :

echo bonjour >> $LOG
cp -f -v ~/toto.txt ~/tata >> $LOG 2>&1
echo au revoir >> $LOG
cp -v truc bidule >> $LOG 2>&1

on peut écrire :

{
echo bonjour
cp -f -v ~/toto.txt ~/tata
echo au revoir
cp -v truc bidule
} >> $LOG 2>&1

Dernière modification par Alain.g (Le 13/09/2008, à 05:50)


Xubuntu Karmic !

Hors ligne

#8 Le 13/09/2008, à 08:54

soupaloignon

Re : [RÉSOLU]Backup en bash >> retour d' erreur dans le log

Pourquoi ne pas utiliser la commande rsync plutôt que cp ?
Dans l'utilisation de cp que tu fais dans ton script tu es d'abord obligé de détruire les précédentes sauvegardes, puis de les recommencer dans leurs intégralités.
rsync te permet de ne modifier sur les sauvegardes que les fichiers nouveaux ou modifiés depuis la dernière sauvegarde, d'où un gain de temps assez conséquent s'il y a un gros volume de données.


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#9 Le 15/09/2008, à 10:38

Totor

Re : [RÉSOLU]Backup en bash >> retour d' erreur dans le log

Alain.g a écrit :

ce qui t'intéresse, c'est donc >> $LOG 2>&1
À noter que 2>&1 >> qu'a donné Totor ne fonctionne pas : cela «affiche un message d'erreur et n'écrit pas dans le fichier»

>> $LOG 2>&1 --> c'est pourtant ce que j'ai mis ?
sauf qu'il n'y a pas d'espace entre >> et $LOG ! Ca joue ? Où bien est-ce le fait d'avoir inversé >> $LOG et 2>&1 ?


-- Lucid Lynx --

Hors ligne

#10 Le 15/09/2008, à 10:51

Alain.g

Re : [RÉSOLU]Backup en bash >> retour d' erreur dans le log

On ne peut pas mettre 2>&1 avant >>  (seul sdtout serait alors écrit dans le fichier)

ls -yz >> commande.log 2>&1
La capture résulte des options illégales "yz" de "ls" dans le fichier "commande.log".
Parce que stderr est redirigé vers le fichier, aucun message d'erreur ne sera visible.

Néanmoins, notez que ce qui suit ne donne *pas* le même résultat.
ls -yz 2>&1 >> command.log
Affiche un message d'erreur et n'écrit pas dans le fichier.

Si vous redirigez à la fois stdout et stderr, l'ordre des commandes fait une différence.


Xubuntu Karmic !

Hors ligne

#11 Le 15/09/2008, à 11:00

Totor

Re : [RÉSOLU]Backup en bash >> retour d' erreur dans le log

Ok !


-- Lucid Lynx --

Hors ligne

#12 Le 20/11/2008, à 16:23

furious-therapy

Re : [RÉSOLU]Backup en bash >> retour d' erreur dans le log

Oké!
Merci pour toutes ces précision!
@Soupaloignon: ja vais voire pour rsync ;)
Cordialement.
Fufu


Fbpanel FR pour Bee
Installation Emu 404
Verrouillage/déverrouillage pc avec une clé usb

Hors ligne