Bonjour,
Je rencontre un problème avec l’installation d’un CRON. En effet, celui-ci devrait lancer un script seulement une fois à une heure bien précise. En d’autres termes il doit exécuter un script de backup tous les jours à 01h00. Voici l’instruction donnée:
`* 1 * * * sh /home/dropbox/backmeup/bin/backup.sh -u user -i /home -o /home/dropbox/Dropbox/backups`
J’aurais aimé joindre un fichier, mais je n’ai pas les permissions pour cela. Désolé pour le pavé. Voici le script /bin/sh:
PROG_NAME=$(basename $0)
USER=""
INPUT_DIR=""
OUTPUT_DIR=""
SCRIPT_DIR=$(dirname $(realpath "$0"))
while getopts u:p:i:o: OPTION
do
case ${OPTION} in
u) USER=${OPTARG};;
i) INPUT_DIR=${OPTARG};;
o) OUTPUT_DIR=${OPTARG};;
?) echo "Usage: ${PROG_NAME} [ -u mysql_username -i input_dir -o output_dir ]"
exit 2;;
esac
done
#Variable with current date and time (for the file name)
DATE_NAME=$(date +'%Y-%m-%d-%H-%M-%S')
#The temp location to copy all files
TEMP_DIR="/tmp"
TEMP_BACKUP_DIR="$TEMP_DIR/$DATE_NAME"
TEMP_SITES_BACKUP_DIR="$TEMP_BACKUP_DIR/sites"
TEMP_NGINX_CONFIG_DIR="$TEMP_BACKUP_DIR/configs/nginx"
TEMP_MYSQL_DATABASE_BACKUP_DIR="$TEMP_BACKUP_DIR/databases"
#Create the directories above
mkdir -p $TEMP_SITES_BACKUP_DIR
mkdir -p $TEMP_NGINX_CONFIG_DIR
mkdir -p $TEMP_MYSQL_DATABASE_BACKUP_DIR
if [ ! -d "$OUTPUT_DIR" ]; then
mkdir -p $OUTPUT_DIR
fi
echo "Backing up sites and config"
cd $INPUT_DIR;
tar -zcf "$TEMP_SITES_BACKUP_DIR/home.tar.gz" --exclude=dropbox "."
tar -zcf "$TEMP_NGINX_CONFIG_DIR/configs.tar.gz" "/etc/nginx/sites-available"
echo "Backing up databases"
#This will backup all my databases
sh $SCRIPT_DIR/dump-all-databases.sh -u $USER -o $TEMP_MYSQL_DATABASE_BACKUP_DIR -z
cd $TEMP_DIR
tar -cf "$OUTPUT_DIR/$DATE_NAME.tar" $DATE_NAME
rm -rf $TEMP_BACKUP_DIR
OLD_BACKUP_FILES=`ls $OUTPUT_DIR -t | tail -n +31`
if [ -n "$OLD_BACKUP_FILES" ]
then
echo "Removing old backup files $OLD_BACKUP_FILES"
rm $OUTPUT_DIR/$OLD_BACKUP_FILES
fi
# Remove old backup archives (3 days)
find $OUTPUT_DIR -mtime +3 -exec rm {} \;
À l’exécution manuelle, avec les mêmes paramètres, ce script s’exécute avec quelques retours console inattendus. Ces retours concernent les permissions relatives à certains fichiers cachés - tel que .viminfo - contenus dans une répertoire /home. Autrement, tout se passe à merveille à la condition que j’exécute manuellement ce script.
Si ce script est appelé par le CRON alors celui-ci s’exécute un nombre indéterminé de fois (beaucoup à en juger le nombre d’archives créées) puis le processus @dropbox permettant une synchronisation avec un compte Dropbox fini par s’arrêter.
Quelqu’un aurait une idée d’où viendrait le problème ?
- Problème de scop relatif au CRON. J’ai lu quelques pistes sur le net là dessus, mais je ne comprends pas encore très bien les principes fondamentaux pour juger ;
- Dysfonctionnement dû aux retours console ;
- Erreur de syntaxe ou de conception dans le script.
J’avoue me casser les dents depuis des mois pour créer un système de backup fiable pour mon VPS personnel. Cette solution me paraît convenable pour mes modestes besoins, c’est pourquoi je fais appel à vous pour me dépanner !
Excellente journée !