Je fais régulièrement des sauvegardes des bases de données de mes sites web lorsqu'une modification importante est faite. Et elles s'entassent dans un dossier sur le site distant. Mais si celui-ci plante, adieu mes sauvegardes.
Voici un solution en bash qui permet de récupérer toutes vos sauvegardes automatiquement avant que le pire n'arrive.
Ce petit script peut être lancé par crontab pour télécharger automatiquement les fichiers et ne garder que les 10 derniers jours de sauvegarde.
Sur le site web les sauvegardes sql s'entassent avec un nom correspondant à la date de la sauvegarde: AAAAMMJJ_hhmmss.sql.
Voici le script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
#!/bin/bash #Définition du séparateur de champ IFS=$'\n' #Paramètres locaux REPERTOIRE_BASE="/home/damien/scripts/" #Répertoire ou se situent les fichiers NB_JOURS=10 #Nombres de jours gardés sur le disque #Paramètres distants SITE_FTP="adresseftp" UTILISATEUR_FTP="utilisateur" PASSWORD_FTP="motdepasse" BASE_FTP="/script" #Récupération des fichiers sur le ftp distant #Les fichiers sont supprimés du ftp après un téléchargement réussi lftp ftp://$UTILISATEUR_FTP:$PASSWORD_FTP@$SITE_FTP -e "mget -E -O '$REPERTOIRE_BASE' '$BASE_FTP/*.*'; quit" #Supression des fichiers datant de plus de NB_JOURS jours DATE_MINI=$(date -d"$NB_JOURS days ago" +%Y%m%d) for FICHIER in $(ls $REPERTOIRE_BASE); do DATE=$(echo $FICHIER | awk -F"[_.]" '{print $1}') TIME=$(echo $FICHIER | awk -F"[_.]" '{print $2}') if [ $DATE -le $DATE_MINI ]; then rm "$REPERTOIRE_BASE/$FICHIER" fi done
|