GNU/Linux >> Tutoriels Linux >  >> Linux

Comment compter le nombre de fichiers dans un répertoire et supprimer les plus anciens si le nombre dépasse 5 ?

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

Linux
  1. Comment compter le nombre de fichiers et de sous-répertoires dans un répertoire donné

  2. Comment supprimer un répertoire et un dossier sous Linux ?

  3. Comptez les lignes de tous les fichiers du répertoire Ubuntu

  4. Compter le nombre de fichiers dans un répertoire en utilisant C

  5. Comment compter le nombre de fichiers dans chaque répertoire ?

Comment sauvegarder des fichiers et des répertoires à l'aide de Rsync sous Linux

Comment supprimer des fichiers et des répertoires à l'aide du terminal dans Debian 10

Comment compter le nombre de fichiers et de sous-répertoires dans un répertoire

Comment compter les fichiers dans le répertoire sous Linux

Compter le nombre de fichiers dans un répertoire sous Linux

Comment compter le nombre de fichiers dans un répertoire sous Linux