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

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

10 réponses

  1. 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
    1. 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
      1. 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
        1. 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
          1. 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
            1. faudrait faire une sortie verbose et également des érreurs dans un fichier pour voir ce qui se passe... -v >>result 2>&1 ...non ?
              0
              1. Ben oui, si besoin...

                Sinon tu peux faire un autre script qui contrôle la présence de ton fichier de backup...
                0
                1. 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
                  1. 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
                    1. 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
                  2. OK, dans le cas où jerry=koko, je te réponds donc à toi.

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