Script automatique de backup EBS avec cron
Résolu
Nalianne
-
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
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
A voir également:
- Script automatique de backup EBS avec cron
- Cobian backup - Télécharger - Sauvegarde
- Logiciel de sauvegarde automatique gratuit - Guide
- Réponse automatique thunderbird - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Script vidéo youtube - Guide
4 réponses
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 :
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
Salut,
Est-ce que ton script est exécutable au moins ?
Quel est ton shell ?
Quel système ? Ou distrib ?
Est-ce que ton script est exécutable au moins ?
Quel est ton shell ?
Quel système ? Ou distrib ?
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)
(manuellement, je n'ai aucun soucis de ce côté tout s'exécute correctement)
#!/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é"
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é"