Script automatique de backup EBS avec cron

Résolu
Nalianne -  
 Nalianne -
Bonjour,

Je travaille actuellement sur un script de backup pour Amazon EBS, mon script marche très bien, et lorsque je le lance manuellement, j'obtiens le résultat escompté. Mon problème se situe lorsque j'essaye de l'exécuter avec cron. En fait... rien ne se passe. J'ai cherché toutes les solutions possibles et imaginables, j'ai regardé je ne sais combien de forum, mais même en appliquant à la lettre chacune des recommandations, rien ne se passe.

ma ligne de crontab ressemble actuellement à ça :
2 11 * * * backs.sh >>/dev/null

Merci d'avance pour votre aide

4 réponses

Résumé de la discussion

Problème rencontré : un script de sauvegarde pour Amazon EBS fonctionne en ligne de commande mais ne s'exécute pas sous cron, produisant aucun résultat malgré l'application des solutions trouvées. Les conseils les plus pertinents recommandent d'utiliser des chemins absolus vers les outils et de définir les variables d'environnement, notamment JAVA_HOME, ou de sourcer le fichier .bashrc au démarrage du script. D'autres éléments insistent sur l'importance d'avoir une logique de redirection et de journalisation correcte et sur le fait que l'environnement Cron est limité et peut ignorer des variables non exportées. En complément, certains échanges évoquent des erreurs liées à des dépendances externes comme des outils Java ou des clés privées manquantes, nécessitant des ajustements dans la configuration.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. gm
     
    Bonjour,

    Dans le cas de l'exécution d'un cronjob, aucun environnement n'est chargé au préalable. Ca signifie entre autre que ta variable PATH est vide.
    Tu dois spécifier le chemin absolu de ton script, vérifier qu'il a bien un shebang, et :
    - Soit utiliser uniquement des chemins absolus dans ton script ;
    - Soit redéfinir le PATH et toutes les variables d'environnement nécessaires au début de ton script ;
    - Soit sourcer ton environnement avant de lancer ton script :

    2 11 * * * . /home/xxx/.profile ; /path/to/backs.sh >>/dev/null 
    0
  2. Nalianne
     
    J'ai essayé cette solution aussi, mais ça n'a rien changé en fait :s
    0
    1. gm
       
      Je t'ai proposé 3 solutions. Tu as testé laquelle ?
      0
    2. Nalianne
       
      les trois, désolée, je me suis mal exprimée
      0
    3. gm
       
      Essaie d'ajouter un "set -x" au début de ton script et de changer ta ligne de cron :

      2 11 * * * /path/to/backs.sh >/tmp/backs_out 2>&1


      Ca t'indiquera ce que fait le shell au fur et à mesure. Si tu compares cette trace avec une exécution manuelle, tu verras là où ça diffère.
      0
  3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Est-ce que ton script est exécutable au moins ?

    Quel est ton shell ?
    Quel système ? Ou distrib ?
    0
  4. Nalianne
     
    alors en fait, apparemment, lorsque je l'exécute automatiquement, il me marque ca : /root/backs.sh: line 16: ec2-create-snapshot: command not found
    (manuellement, je n'ai aucun soucis de ce côté tout s'exécute correctement)
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Affiches-nous ton script.
      0
    2. Nalianne
       
      #!/bin/bash
      set -x

      DATESTAMP='date +%Y.%m.%d'
      TIMESTAMP='date +%H%M'
      LOGFILE="/var/log/_backup.log"

      VOLUMES=( vol-cccf92a5 )

      echo "CIT EBS BACKUP $DATESTAMP $TIMESTAMP" 2>&1 | tee -a $LOGFILE
      echo " " 2>&1 | tee -a $LOGFILE

      # Create a snapshot of each volume.
      for volume in ${VOLUMES[@]}
      do
      ec2-create-snapshot -v $volume --region eu-west-1 -d backup-$DATESTAMP 2>&1 |tee -a $LOGFILE
      done

      #Remove older snapshots we don't need to keep any more.
      #for volume in ${VOLUMES[@]}
      # do
      # ec2-manage-snapshots -v $volume 2>&1 | tee -a $LOGFILE
      #done

      echo "script executé"
      0
    3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Comme dit plus haut il faut que tu donnes les chemins ABSOLUS vers tes programmes !!!
      0
    4. Nalianne
       
      J'avoue ne pas voir ou, dans ce script j'utilise un chemin qui ne l'est pas
      0
    5. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      ec2-create-snapshot il se trouve où dans ton arborescence ?

      whereis ec2-create-snapshot 
      0