J'ai créé un script pour exécuter des sauvegardes automatisées sur mon serveur CentOS 7.
Les sauvegardes sont stockées dans le répertoire /home/backup. Le script fonctionne, mais maintenant je voudrais incorporer un moyen de compter les fichiers après la sauvegarde et si le nombre est supérieur à 5, supprimez la sauvegarde la plus ancienne.
Voici ce que j'ai pour mon script de sauvegarde.
#!/bin/bash
#mysqldump variables
FILE=/home/backup/databasebk_!`date +"Y-%m-%d_%H:%M"`.sql
DATABASE=database
USER=root
PASS=my password
#backup command process
mysqldump --opt --user=${USER} --password=${PASS} ${DATABASE} > ${FILE}
#zipping the backup file
gzip $FILE
#send message to the user with the results
echo "${FILE}.gz was created:"
ls -l ${FILE}.gz
# This is where I would like to count the number of files
# in the directory and if there are more than 5 I would like
# to delete the oldest file. Any help is greatly appreciated
Merci
-Mike
Réponse acceptée :
Vous pouvez regarder set -- /home/backup/databasebk_*
et tant que $#
est supérieur à cinq, supprimez un fichier.
Ainsi, le code ressemblerait à
set -- /home/backup/databasebk_*
while [ $# -gt 5 ]
do
echo "Removing old backup $1"
rm "$1"
shift
done
Cela fonctionne car les noms de fichiers que vous avez choisis sont automatiquement dans l'ordre "le plus ancien en premier".
Par souci de cohérence, je définirais une variable (je l'appelle normalement BASE
mais vous pouvez l'appeler comme vous voulez)
Alors
BASE=/home/backup/databasebk_
FILE=${BASE}!`date +"%Y-%m-%d_%H:%M"`.sql
....
set -- ${BASE}*
while [ $# -gt 5 ]
do
echo "Removing old backup $1"
rm "$1"
shift
done