OVH Cloud OVH Cloud

script qui plante avec la crontab

5 réponses
Avatar
Lassie
Hello,

J'ai un script qui fait une sauvegarde (tar) de toute l'arborescence des
sources d'un projet.
Je fais juste un tar, puis je fais aussi une copie sur un serveur réseau
monté avec samba sur /mnt/backup

Voilà mon "script" (on ne rigole pas... :-) ) :
----
DATE=`date "+%Y%m%d"`
tar czvf /home/monuser/backups/src_$DATE.tgz /home/monuser/Projet/src/*
cp /home/monuser/backups/src_$DATE.tgz /mnt/backup
----

Il marche très bien quand je l'appelle à partir d'une console. J'obtiens
un fichier tgz d'une taille approximative de 1,5 Meg

Je me suis dit que ça serait cool si je le lançai automatiquement tous
les soirs, d'où la crontab suivante :
----
# Backup Daily des sources (L-V a 23h30)
30 23 * * 1-5 /home/monuser/Projet/Tools/backup_sources.sh
----

Le script est bien lancé au bon moment (bons jours, et bonne heure) par
la crontab, mais le tar ne se termine apparemment pas bien : le fichier
.tgz ne fait que 30k et n'a pas été copié avec le cp. Quand j'essaye de
restaurer le .tgz , il me sort une erreur.

Je comprends pas pourquoi ça marche en le lançant à la main, et ça
plante quand c'est la crontab qui le lance. Chuis perplexe là...

A+

Lassie

5 réponses

Avatar
Tibi
On Fri, 13 Feb 2004 16:26:24 +0100, Lassie wrote:

Je comprends pas pourquoi ça marche en le lançant à la main, et ça
plante quand c'est la crontab qui le lance. Chuis perplexe là...


L'utilisateur perplexe sera avisé de lire ses mails dans ce cas précis.
Cron t'envoie par mail les sortie standard et d'erreur des jobs qu'il
lance :)

Avatar
Luc Martineau
Lassie wrote:
Hello,
Bonjour

...

Le script est bien lancé au bon moment (bons jours, et bonne heure) par
la crontab, mais le tar ne se termine apparemment pas bien : le fichier
.tgz ne fait que 30k et n'a pas été copié avec le cp. Quand j'essaye de
restaurer le .tgz , il me sort une erreur.

Je comprends pas pourquoi ça marche en le lançant à la main, et ça
plante quand c'est la crontab qui le lance. Chuis perplexe là...

À tout hasard, est-ce que tar est accessible à partir de la varible PATH du

crontab de l'utilisateur qui exécute le script?

L'environnement de cron est minimaliste.
C'est un cas classique d'un script qui fonctionne en interactif et pas avec cron

Donc ,deux solutions:
1)Ajouter la ligne suivante au crontab:
PATH="/bin"

2)Spécifier le chemin complet de tar et cp dans le script


En espérant d'avoir aider un peu.

Luc

Avatar
TiChou
Dans l'article news:402ceb91$0$28151$,
Lassie écrivait :

Hello,


Bonjour,

J'ai un script qui fait une sauvegarde (tar) de toute l'arborescence des
sources d'un projet.
Je fais juste un tar, puis je fais aussi une copie sur un serveur réseau
monté avec samba sur /mnt/backup

Voilà mon "script" (on ne rigole pas... :-) ) :
----
DATE=`date "+%Y%m%d"`
tar czvf /home/monuser/backups/src_$DATE.tgz /home/monuser/Projet/src/*
cp /home/monuser/backups/src_$DATE.tgz /mnt/backup
----

Il marche très bien quand je l'appelle à partir d'une console. J'obtiens
un fichier tgz d'une taille approximative de 1,5 Meg

Je me suis dit que ça serait cool si je le lançai automatiquement tous
les soirs, d'où la crontab suivante :
----
# Backup Daily des sources (L-V a 23h30)
30 23 * * 1-5 /home/monuser/Projet/Tools/backup_sources.sh
----

Le script est bien lancé au bon moment (bons jours, et bonne heure) par
la crontab, mais le tar ne se termine apparemment pas bien : le fichier
.tgz ne fait que 30k et n'a pas été copié avec le cp. Quand j'essaye de
restaurer le .tgz , il me sort une erreur.

Je comprends pas pourquoi ça marche en le lançant à la main, et ça
plante quand c'est la crontab qui le lance. Chuis perplexe là...


Le même problème a été signalé ici :

http://www.google.fr/groups?th`d3f769be5614c6

Essayez de tenir compte des remarques qui avaient été faite.
Malheureusement, et ça bien trop souvent, l'initiateur de ce post nous a pas
tenu informé de l'évolution de son problème et de sa résolution ou pas...
Pour ma part, je pense que le problème se situe au niveau des redirections
des sorties. N'utilisez pas l'option verbose (-v) dans votre commande tar.

--
TiChou

Avatar
Lassie
TiChou wrote:
[snip]
Je comprends pas pourquoi ça marche en le lançant à la main, et ça
plante quand c'est la crontab qui le lance. Chuis perplexe là...


Le même problème a été signalé ici :

http://www.google.fr/groups?th`d3f769be5614c6

Essayez de tenir compte des remarques qui avaient été faite.
Malheureusement, et ça bien trop souvent, l'initiateur de ce post nous a pas
tenu informé de l'évolution de son problème et de sa résolution ou pas...
Pour ma part, je pense que le problème se situe au niveau des redirections
des sorties. N'utilisez pas l'option verbose (-v) dans votre commande tar.


Bien vu, c'était effectivement l'histoire de la redirection de la sortie
standard.
J'ai modifié la crontab pour rediriger la sortie standard vers un log,
et ça marche nickel :
/home/monuser/Projet/Tools/backup_sources.sh > /tmp/myscript.log

Merci pour l'info, je ne savais pas que la crontab ne connaissait pas la
même sortie standard que le user. D'après ce que je crois comprendre,
par defaut, c'est redirigé vers le mail et apparemment le mail explose
car le -v du tar est trop 'bavard'.
Ca m'intéresse cette histoire d'erreurs redirigées vers le mail, ça peut
m'être utile pour un autre script. Je vais chercher de la doc la dessus.

A+


Avatar
Lassie
Tibi wrote:
On Fri, 13 Feb 2004 16:26:24 +0100, Lassie wrote:

Je comprends pas pourquoi ça marche en le lançant à la main, et ça
plante quand c'est la crontab qui le lance. Chuis perplexe là...



L'utilisateur perplexe sera avisé de lire ses mails dans ce cas précis.
Cron t'envoie par mail les sortie standard et d'erreur des jobs qu'il
lance :)


Pile poil... c'était effectivement à cause de la redirection par defaut
du cron sur le mail. Apparemment le tar génère trop de lignes (à cause
du -v) pour le mail qui fini par exploser...
Je ne connaissais pas ce détail de la crontab.
A+