Pages : 1
#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..
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à...
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
Pages : 1