[CRONTAB] problème d'éxécution de la commande

Fermé
koko - 25 janv. 2010 à 11:24
zurg_ Messages postés 134 Date d'inscription jeudi 15 octobre 2009 Statut Membre Dernière intervention 15 avril 2010 - 26 janv. 2010 à 13:51
Bonjour à tous !

j'ai un petit problème, j'ai deux PCs sous CentOS, j'aimerai pouvoir automatiser la sauvegarde d'un fichier que j'utilise assez souvent toutes les 30 minutes, via une commande rsync dans crontab. La sauvegarde se fait à distance (pas sur un seul PC).

sur le poste client j'utilise donc la commande crontab -e

donc on a */30 * * * 1-5 rsync -avz -e ssh /<chemin_fichier> login@ip_serveur:/<chemin destination>/

ce qui veut bien dire que toutes les demi-heure du lundi au vendredi, toutes les modifications du fichier concerné seront enregistrées automatiquement dans <chemin_destination> du serveur

pourtant quand je vérifie les sauvegarde sur le serveur, le transfert n'a pas été fait
pour info, crond est bien démarré (vérifié avec ps -ax)

donc pour le moment je sauvegarde tout à la main en tapant la commande (c'est à dire sans crontab)

quelqu'un peut-il m'aiguiller pour la résolution du problème ?

Merci d'avance
A voir également:

10 réponses

zurg_ Messages postés 134 Date d'inscription jeudi 15 octobre 2009 Statut Membre Dernière intervention 15 avril 2010 27
25 janv. 2010 à 12:37
Euh, le d du début indique que tu as affaire à un répertoire...

Tu devrais te renseigner un peu plus sur la gestion des fichiers et des droits sous linux...

Je te déconseille de faire un chmod 777, c'est une mauvaise habitude, si tu veux rajouter uniquement les droits en exécution, un chmod +x backups.sh suffit amplement.

2
zurg_ Messages postés 134 Date d'inscription jeudi 15 octobre 2009 Statut Membre Dernière intervention 15 avril 2010 27
25 janv. 2010 à 11:33
Salut,

Vérifie que l'utilisateur qui lance ta commande a les droits d'exécution sur celle-ci.

(Sinon, à placer dans le crontab de root)
à ta place, je ferais un script qui contient ta commande rsync -avz -e ssh /<chemin_fichier> login@ip_serveur:/<chemin destination>/

et c'est le lancement du script que je programmerai dans ton cron.

N'oublie pas de rendre ton script exécutable.
0
et si je crée un fichier backups.sh sous la racine et que j'y met la commande
'rsync -avz -e ssh /<chemin_fichier> login@ip_serveur:/<chemin destination>/ '

du coup je modifie la crontab :
*/30 * * * 1-5 /backups.sh

Si je comprend bien cron va éxécuter la commande qui se trouve dans backups.sh

Cela va-t-il fonctionner ou ne rien faire comme précédemment ?
0
zurg_ Messages postés 134 Date d'inscription jeudi 15 octobre 2009 Statut Membre Dernière intervention 15 avril 2010 27
25 janv. 2010 à 11:46
Oui, sauf que pour faire un script shell, il y a quelques trucs à rajouter en plus dans ton fichier. Je te laisse chercher ça, tu devrais trouver en 3sec sur google.

Et puis sache que chaque utilisateur Unix a un crontab qui lui est propre, et qui permet de lancer des commandes dans SON environnement, avec SES droits.

Donc soit tu étais connecté root lorsque tu as édité ton crontab (crontab -e), auquel cas, tu as juste à rendre ton script shell exécutable (chmod +x <nomdufichier>), soit tu ne l'étais pas et il faut que tu autorises ton user à exécuter la commande rsync.

Voilou
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dacodac
en fait j'ai fais un chmod 777 backups.sh
et quand le fais un ls -al pour afficher les droits il me met -rwxrwxrwx ... je comprend ce que ça veut dire mais je sais pas pourquoi il manque le 'd' au début

need help!
0
judasperge Messages postés 153 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 19 février 2012 35
25 janv. 2010 à 13:15
faudrait faire une sortie verbose et également des érreurs dans un fichier pour voir ce qui se passe... -v >>result 2>&1 ...non ?
0
zurg_ Messages postés 134 Date d'inscription jeudi 15 octobre 2009 Statut Membre Dernière intervention 15 avril 2010 27
25 janv. 2010 à 13:55
Ben oui, si besoin...

Sinon tu peux faire un autre script qui contrôle la présence de ton fichier de backup...
0
Re-bonjour

Je dirai que le problème est presque résolu ...

En fait j'ai faits des tests sur une même machine pour le moment :
- j'ai créé un fichier backups.sh
- j'y ai mis :
#!/bin/bash
rsync -a /home/administrateur/<fichier> /home/administrateur/my_backups/

- j'ai ajouté le droit d'éxécution pour backups.sh avec la commande chmod u+x backups.sh

- j'ai modifié crontab avec crontab -e
- j'y ai mis :
*/5 * * * 1-5 /bin/backups.sh

- j'ai modifié la crontab dans etc
- j'y ai mis :
*/5 * * * 1-5 /bin/backups.sh

- Puis j'ai redémarré crond avec /etc/init.d/crond restart

Le test est concluant, la sauvegarde se fait toutes les 5 minutes

j'ai refais la même démarche pour la sauvegarde à distance en créant backups_srv.sh et en y inscrivant :
#!/bin/bash
rsync -a -e ssh /home/administrateur/my_backups/ root@titi:/home/administrateur/backups_rsync/

j'ai modifié les droits et la crontab pour executer la commande toutes les 5 minutes

mais là problème rien ne se passe, si vous avez des suggestions, pouvez vous m'en faire part s'il vous plait
0
zurg_ Messages postés 134 Date d'inscription jeudi 15 octobre 2009 Statut Membre Dernière intervention 15 avril 2010 27
26 janv. 2010 à 10:25
Salut,

il faut vérifier plusieurs points :

d'abord je te conseille de faire un man rsync ou de te rendre ici : http://www.delafond.org/traducmanfr/man/man1/rsync.1.html afin de voir toutes les options que tu peux utiliser.

Par défaut rsync utilise le ssh, je ne suis pas sûr que le -e ssh soit utile dans ton cas. D'ailleurs l'option -e permet d'utiliser un autre shell.

Vérifie donc que tu ne bloques pas le ssh sur ta machine distante (firewall), et puis essaie sans -e ssh.
0
une commande rsync sans ssh ne m'est pas utile du fait que je veux des transferts sécurisés donc je suis obligé de mettre ... -e ssh ...
0
zurg_ Messages postés 134 Date d'inscription jeudi 15 octobre 2009 Statut Membre Dernière intervention 15 avril 2010 27
26 janv. 2010 à 13:51
OK, dans le cas où jerry=koko, je te réponds donc à toi.

As-tu testé les autres points ? (ouverture du port ssh ...?)
0