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 26/03/2012, à 11:22

xianghua

Crontab :$$$

Bonjour amis pingouins (c'est la première fois que je post ici)

M'étant acharné pendant une demi journée afin de réussir un fuc**** script bash, voilà que je galère sur ce que je pensais le plus simple --> crontab!

Mon besoin était de faire un script d'export de base SQL sur un serveur ftp et je l'ai réussi (un internaute m'a aidé pour le "EOF" que je ne connaissais pas), sauf que le crontab me génère des fichiers alakon, là ou mon script lancé manuellement fait ce que j'attendais de lui.

Voici le script:

#!/bin/bash
mysqldump -u glpiuser -pglpi glpidb > /home/root/backup/glpi.sql
mysqldump -u ocs -pocs ocsweb > /home/root/backup/ocs.sql
#Compression des fichiers du répertoire .sql
tar zcvf backup-$(date +%F-%H%M).tar.gz *

#variable
port_ftp='21'
user_ftp='INTRANET'
passwd_ftp='blablabla'
host_ftp='172.17.1.212'
backup="backup-$(date +%F-%H%M).tar.gz"

#Envoyer sur le NAS en FTP
ftp -i -n ${host_ftp} ${port_ftp} << EOF
user ${user_ftp} ${passwd_ftp}
cd /MySQL
put ${backup}
quit
EOF

rm /home/root/backup/${backup}
rm /home/root/backup/ocs.sql
rm /home/root/backup/glpi.sql

Dans mon crontab (-e, hein?) j'ai testé avec plusieurs choses afin que ça marche (bien sur j'ai mis qu'une seule ligne à chaque fois):

0 17 * * 1-7 /home/root/backup/saveftp
0 17 * * 1-7 /home/root/backup/./saveftp
0 17 * * 1-7 bash /home/root/backup/saveftp

Cela me génère après sur mon serveur ftp un fichier backup-"année"-"mois"-"jour"-1700.tar.gz faisant 0ko la première fois,le lendemain il me reprend tout les .tar.gz des anciens jours puis me fait un .tar.gz avec l'ancienne archive de la veille (sur le ftp) à 0ko + la nouvelle à 0ko et ainsi de suite au fur et à mesure des jours. au bout de 5 jours je me retrouve avec un .tar.gz bien ettofé..de vide! (j'espère que vous me suivez)

L'envoie de mail du cron m'indique:

To: root@empty
Subject: Cron <root@INTRANET> /home/root/backup/./saveftp
Content-Type: text/plain; charset=ANSI_X3.4-1968
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>

backup-2012-03-22-1700.tar.gz
backup-2012-03-23-1700.tar.gz
backup-2012-03-24-1700.tar.gz
backup-2012-03-25-1700.tar.gz
rm: cannot remove `/home/root/backup/backup-2012-03-26-1700.tar.gz': No such file or directory

(D'ailleurs bien qu'ayant configuré exim4 pour l'envoie via une adresse gmail et ayant configuré mon /etc/aliases, il m'envoie ça à une adresse root@empty, alors que ça marche parfaitement avec mon mdadm.conf)

Y'a t'il une soluce miracle? ou cela vient de mon script?

Merci pour les personnes se penchant la dessus, je peux pousser la chansonnette par webcam pour vous remerciez si vous voulez x)

Dernière modification par xianghua (Le 26/03/2012, à 11:25)

Hors ligne

#2 Le 26/03/2012, à 11:39

credenhill

Re : Crontab :$$$

hello
si le tar dure plus d'une minute, il y aura une différence entre

tar zcvf backup-$(date +%F-%H%M).tar.gz *

et

backup="backup-$(date +%F-%H%M).tar.gz"

Hors ligne

#3 Le 26/03/2012, à 11:45

xianghua

Re : Crontab :$$$

Salut et merci de t'être pencher là dessus.

Ce sont deux petites bdd (mais j'en prévoie d'en mettre une troisième plus importante), pour le moment le tar est assez rapide (une fois effectuée, l'archive pèse dans les 600ko)

Que dois je faire donc?

Ce que je ne pige toujours pas, c'est: pourquoi ça marche manuellement, et pas avec crontab?
Quel syntaxe, je devrais rentrer dans crontab ou quel partie du script je dois modifier.. hmm

Hors ligne

#4 Le 26/03/2012, à 11:58

credenhill

Re : Crontab :$$$

définir au début

backup="/home/root/backup/backup-$(date +%F-%H%M).tar.gz"

et utiliser ce nom partout
capturer les erreurs dans crontab

0 17 * * 1-7 /home/root/backup/saveftp > /tmp/log 2>&1

Hors ligne

#5 Le 26/03/2012, à 12:20

xianghua

Re : Crontab :$$$

ça me fait:

root@INTRANET:/home/root/backup# ./saveftp
glpi.sql
ocs.sql
saveftp
Could not create file.

Mon fichier ressemble maintenant à

#!/bin/bash
backup="/home/root/backup/backup-$(date +%F-%H%M).tar.gz"

mysqldump -u glpiuser -pglpi glpidb > /home/root/backup/glpi.sql
mysqldump -u ocs -pocs ocsweb > /home/root/backup/ocs.sql

#Compression des fichiers du répertoire .sql
tar zcvf ${backup} *

rm /home/root/backup/ocs.sql
rm /home/root/backup/glpi.sql

#variable
port_ftp='21'
user_ftp='INTRANET'
passwd_ftp='blablalbla'
host_ftp='172.17.1.212'

#Envoyer sur le NAS en FTP
ftp -i -n ${host_ftp} ${port_ftp} << EOF
user ${user_ftp} ${passwd_ftp}
cd /MySQL
put ${backup}
quit
EOF

(Je n'ai pas encore dit que j'effacais mon ancienne archive de /home/root/backup afin d'éviter une erreur supplémentaire)

J'avoue que je sèche un peu là... hmm

Dernière modification par xianghua (Le 26/03/2012, à 12:29)

Hors ligne

#6 Le 26/03/2012, à 13:04

credenhill

Re : Crontab :$$$

Could not create file

problèmes de droits
mysqldump s'exécute comme root ou comme glpiuser ?
créer les fichiers dans /tmp

Hors ligne

#7 Le 26/03/2012, à 13:32

xianghua

Re : Crontab :$$$

Comme glpiuser.
Mais pour autant mes dump fonctionnent très bien.. c'est vraiment au niveau du tar qu'il y a des problèmes..
Je cherche encore, j'avance à taton!

Ptite question y'a t'il possibilité de lancer un cron à 14h40 par exemple?
(14.30 dans crontab -e fonctionnerait?)

Merci

Hors ligne

#8 Le 26/03/2012, à 14:04

credenhill

Re : Crontab :$$$

mettre un cd /le_bon_dossier au début du script
voir man -s 5 contab
de gauche à droite : minute heure jour-du-mois mois jour-de-la-semaine
donc : 30 14 * * * commande

Dernière modification par credenhill (Le 26/03/2012, à 14:06)

Hors ligne

#9 Le 26/03/2012, à 14:04

xianghua

Re : Crontab :$$$

#!/bin/bash
filename="backup-$(date +%F-%H%M).tar.gz"
OCS="ocs.sql"
GLPI="glpi.sql"
mysqldump -u glpiuser -pglpi glpidb > /home/glpi.sql
mysqldump -u ocs -pocs ocsweb > /home/ocs.sql

#Compression des fichiers du répertoire .sql
tar -cvzf ${filename} $OCS $GLPI

rm /home/ocs.sql
rm /home/glpi.sql

#variable
port_ftp='21'
user_ftp='INTRANET'
passwd_ftp='blablabla'
host_ftp='172.17.1.212'

#Envoyer sur le NAS en FTP
ftp -i -n ${host_ftp} ${port_ftp} << EOF
user ${user_ftp} ${passwd_ftp}
cd /MySQL
bin
put ${filename}
close
bye
EOF

Mon fichier ressemble à ça maintenant, je pense que l'étoile posait vraiment problème.
Le script fonctionne toujours à la main mais le cron échoue.
Par mail il me dit:
To: root@empty
Subject: Cron <root@INTRANET> /home/saveftp
Content-Type: text/plain; charset=ANSI_X3.4-1968
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>

tar: ocs.sql: Cannot stat: No such file or directory
tar: glpi.sql: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

Ou j'indique le chemin d'ocs et glpi?
Si t'as une idée, je te dis un grand merci!

Dernière modification par xianghua (Le 26/03/2012, à 14:06)

Hors ligne

#10 Le 26/03/2012, à 14:09

credenhill

Re : Crontab :$$$

mettre un cd où se trouvent  $OCS et $GLPI au début

Hors ligne

#11 Le 26/03/2012, à 14:11

xianghua

Re : Crontab :$$$

OMFG je n'y pensais pas au CD... je mettais toujours /répertoire

Je suis sur que c'est ça! merci! je test!

Dernière modification par xianghua (Le 26/03/2012, à 17:31)

Hors ligne

#12 Le 26/03/2012, à 14:19

xianghua

Re : Crontab :$$$

ça marcheeeeeeeeeeeeeeeeeeeeeeeeeeee! merci!!

J'ai juste fait :

cd /home
tar -cvzf ${filename} $OCS $GLPI
rm /home/ocs.sql
rm /home/glpi.sql

Un énorme merci pour m'avoir indiqué le CD, c'est pourtant tout con!
Bizarre tout de même que le chemin ne marchait pas.
Bonne journée à toi et encore merci

Hors ligne

#13 Le 26/03/2012, à 14:25

credenhill

Re : Crontab :$$$

on se fait toujours avoir par crontab, parce qui 'il n'y a pas de  login.

Hors ligne