#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 !
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 !
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 ( !?!)...
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
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