problème d'exécution de script avec crontab

problème d'exécution de script avec crontab - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 12-07-2005 à 12:57:21    

hello!
 
 
j'ai un petit soucis sur une debian.
 
J'ai un script à la racine d'un disque hda1 monté sur / et ce script fait une archive tar des données contenues dans un dossier /partage vers un second disque hdc1 monté sur /home
 
Si je lance ce script en tant que root ou un autre ayant droit, ça marche.
Par contre j'ai planifié son exécution la nuit avec un crontab et le fichier tar.gz, au lieu de faire 11Mo ne fait que 1Mo :o
 
Comment-se fait-ce?
 

Code :
  1. tar -cvf /home/sauvegarde/backup.tar /partage/*
  2. gzip /home/sauvegarde/backup.tar


 

Code :
  1. SHELL=/bin/sh
  2. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  3. # m h dom mon dow user  command
  4. 50 23   * * *   root    /./script

Reply

Marsh Posté le 12-07-2005 à 12:57:21   

Reply

Marsh Posté le 12-07-2005 à 13:03:22    

2 choses :
- quels sont les fichiers manquant entre les 2 exécutions
- CRON a t-il envoyé un mail (/var/spool/)indiquant qu'il ne pouvait exécuter une commande ?
 
en modifiant le script de la sorte :

Code :
  1. #/bin/sh
  2. /bin/tar -cvf /home/sauvegarde/backup.tar /partage/*
  3. /bin/gzip /home/sauvegarde/backup.tar


cela marche t-il ?


Message édité par jlighty le 12-07-2005 à 13:12:53
Reply

Marsh Posté le 12-07-2005 à 13:09:47    

pourquoi faire un tar puis un gzip ??
 

Code :
  1. /bin/tar -cvzf /home/sauvegarde/backup.tar.gz /partage/*


 
suffit largement...

Reply

Marsh Posté le 12-07-2005 à 13:12:37    

ca dépend de l'implémentation de tar dans la machine son code est donc portable sur d'autres systèmes :D en la commande tar par défaut ne peut pas compresser en GZIP.
Ceci dit l'avantage tar -cvzf est d'éviter d'oublier de supprimer le fichier temporaire donc gain de place...

Reply

Marsh Posté le 12-07-2005 à 13:38:15    

jlighty a écrit :

2 choses :
- quels sont les fichiers manquant entre les 2 exécutions
- CRON a t-il envoyé un mail (/var/spool/)indiquant qu'il ne pouvait exécuter une commande ?
 
en modifiant le script de la sorte :

Code :
  1. #/bin/sh
  2. /bin/tar -cvf /home/sauvegarde/backup.tar /partage/*
  3. /bin/gzip /home/sauvegarde/backup.tar


cela marche t-il ?


 
 
rien dans /var/spool, pour les fichiers il en manque 99% et le fichier modifié, je vais le tester maintenant avec le tar -cvzf :)

Reply

Marsh Posté le 12-07-2005 à 13:44:10    

je dirais même plus : tar jcvf :)


---------------
:: Light is Right ::
Reply

Marsh Posté le 12-07-2005 à 13:48:31    

bon même avec le /bin devant ça ne marche pas :??:
 
en plus j'me suis trompé, c'est pas 1mo qu'il fait avec le cron, c'est 100Ko :D
 
là je viens de retester, j'ai obtenu un fichier de 350Ko, donc une toute petite partie des données s'y trouve :o

Reply

Marsh Posté le 12-07-2005 à 13:49:52    

essaies de loguer la sortie standard & erreur voir ce qu'il se passe


---------------
:: Light is Right ::
Reply

Marsh Posté le 12-07-2005 à 13:50:01    

Quelles sont les points communs entre les fichiers compressés ? même repertoire ? même propriétaire ? ...

Reply

Marsh Posté le 12-07-2005 à 13:50:36    

et rsync tu préfères pas ?


---------------
:: Light is Right ::
Reply

Marsh Posté le 12-07-2005 à 13:50:36   

Reply

Marsh Posté le 12-07-2005 à 13:51:52    

plusieurs repertoires, aucune gestion de droits.
en fait c'est les données partagées via un serveur samba.
 
rsync? connais pas :D

Reply

Marsh Posté le 12-07-2005 à 13:53:34    

Krapaud a écrit :

plusieurs repertoires, aucune gestion de droits.
en fait c'est les données partagées via un serveur samba.
 
rsync? connais pas :D


ça sert justement à faire des sauvegardes :D


---------------
:: Light is Right ::
Reply

Marsh Posté le 12-07-2005 à 13:55:08    

oui j'me doute bien, mais ça ne règle pas mon problème de cron, et là ça me chagrine (j'aime pas rester sur un bug) :D
 
donc là je ne vois pas d'où vient le problème, parce que mon script est plus que bidon, il marche quelques secondes puis s'arrête :o

Reply

Marsh Posté le 12-07-2005 à 13:57:03    

Ce que je voulais dire, dans l'archive de 100ko quelles sont les points communs entre les fichiers compressés ? même repertoire ? même propriétaire ? ...

Reply

Marsh Posté le 12-07-2005 à 13:58:47    

non, il y a deux repertoires commençant par la lettre "A", les propriétaires sont les mêmes (fichiers copiers/collés depuis un partage windows), aucune gestion de droits dans samba...
 
bref le plus simple qui soit :o

Reply

Marsh Posté le 12-07-2005 à 14:01:53    

Cron n'aime peut être pas le "*" ?
avec ceci :

Code :
  1. /bin/tar -cvf /home/sauvegarde/backup.tar /partage/

Reply

Marsh Posté le 12-07-2005 à 14:07:39    

ok, je teste :)

Reply

Marsh Posté le 12-07-2005 à 14:09:13    

même chose :o

Reply

Marsh Posté le 12-07-2005 à 14:13:13    

bon etape suivante -> rédiriger les erreurs de tar dans un fichier.

Code :
  1. /bin/tar -cvf /home/sauvegarde/backup.tar /partage/ 2> /home/sauvegarde/tar.log


et regarde le contenu de tar.log

Reply

Marsh Posté le 12-07-2005 à 14:14:17    

même chose pour gzip

Code :
  1. /bin/gzip /home/sauvegarde/backup.tar 2> /home/sauvegarde/gzip.log

Reply

Marsh Posté le 12-07-2005 à 14:34:48    

ok :jap:
 
je le fais pour le seul tar -cvzf là :)

Reply

Marsh Posté le 12-07-2005 à 14:43:40    

alors grosse incompréhension :  
ça marche :??:
 
il a suffit que je rajoute le log pour que maintenant ça fonctionne :o

Reply

Marsh Posté le 12-07-2005 à 14:44:52    

il n'y avait pas une erreur de syntaxe ? un caractère en trop ?

Reply

Marsh Posté le 12-07-2005 à 15:08:09    

non, je n'ai fait qu'ajouter un > test.log
 
et puis ça marchait bien quand je lançais le script hors du cran :jap:
 
 
merci bien :hello:

Reply

Marsh Posté le 12-07-2005 à 15:09:09    

louche


---------------
:: Light is Right ::
Reply

Marsh Posté le 12-07-2005 à 15:10:09    

comme tu dis :o

Reply

Marsh Posté le 21-07-2005 à 12:04:55    

alors là c'est du délire :o
 

Code :
  1. for i in `seq 99 -1 1`; do
  2. j=`expr $i + 1`;
  3. mv "/home/sauvegarde/backup$i.tar.gz" "/home/sauvegarde/backup$j.tar.gz";
  4. done;
  5. mv /home/sauvegarde/backup.tar.gz /home/sauvegarde/backup1.tar.gz
  6. /bin/tar -cvzf /home/sauvegarde/backup.tar.gz /partage/ >/home/sauvegarde/backup.log


 
depuis que j'ai rajouté la boucle for, le script de fonctionne plus quand il est exécuté par un cron :'(

Reply

Marsh Posté le 21-07-2005 à 12:06:36    

remplace seq par /usr/bin/seq
et expr par /usr/bin/expr

Reply

Marsh Posté le 21-07-2005 à 12:07:45    

Normalement lorsque tu as inséré le script dans la crontab, tu as dû redirigé les erreurs dans un fichier Il suffit d'ouvrir ce fichier pour trouver l'erreur (command not found)

Reply

Marsh Posté le 21-07-2005 à 12:11:07    

jlighty a écrit :

Normalement lorsque tu as inséré le script dans la crontab, tu as dû redirigé les erreurs dans un fichier Il suffit d'ouvrir ce fichier pour trouver l'erreur (command not found)


euh, en fait je ne sais pas rediriger les erreurs :o

Reply

Marsh Posté le 21-07-2005 à 12:13:31    

même en modifiant seq et expr en indiquant leur chemin, ça ne fonctionne pas non plus :o

Reply

Marsh Posté le 21-07-2005 à 12:17:39    

dans ta crontab, tu rajoutes à la fin :

Code :
  1. 2> /home/sauvegarde/tar.log


ex:  

Code :
  1. /bin/tar -cvf /home/sauvegarde/backup.tar /partage/ 2> /home/sauvegarde/tar.log

Reply

Marsh Posté le 21-07-2005 à 12:20:37    

linux rediriger erreurs  
dans google :D


---------------
Du taf dans le Logiciel Libre : https://www.linuxjobs.fr
Reply

Marsh Posté le 21-07-2005 à 12:27:36    

Ca ne viendrait pas du fait que le fichier ne commence pas par :
#!/bin/sh
?

Reply

Marsh Posté le 21-07-2005 à 12:31:26    

en effet s'il n'a pas mis #!/bin/sh cron va pas pouvoir interpréter l'instruction for.

Reply

Marsh Posté le 21-07-2005 à 12:33:13    

jlighty a écrit :

dans ta crontab, tu rajoutes à la fin :

Code :
  1. 2> /home/sauvegarde/tar.log


ex:  

Code :
  1. /bin/tar -cvf /home/sauvegarde/backup.tar /partage/ 2> /home/sauvegarde/tar.log



maintenant que j'ai rajouté ça dans le crontab ça marche :'(
j'y comprends rien :o

Reply

Marsh Posté le 21-07-2005 à 12:34:07    

deather2 a écrit :

Ca ne viendrait pas du fait que le fichier ne commence pas par :
#!/bin/sh
?


 
 
sisi, je l'ai mis :o

Reply

Marsh Posté le 21-07-2005 à 12:36:49    

Une hypothèse, il se peut que tar ou un des programmes appelés dans le script doit nécessairement envoyer des informations sur l'entrée standard ou erreur. Si tu ne récupères pas ces infos soit directement sur le terminal (lancé à la main) ou par une redirection dans un fichier (ce qui tu as fait), il se peut que le programme plante.


Message édité par jlighty le 21-07-2005 à 12:37:29
Reply

Marsh Posté le 21-07-2005 à 12:40:32    

ah ok, c'est bizarre parce que la première fois il fallait une sortie juste pour le tar -cxvf, et là il en faut une dans le crontab directement :o
 
En tout cas une nouvelle fois merci :jap: :jap:

Reply

Marsh Posté le 03-08-2005 à 11:44:42    

Il se sent surveillé... alors il n'ose plus trop faire son malin  :lol:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed