GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie zähle ich die Anzahl der Dateien in einem Verzeichnis und lösche die ältesten, wenn die Anzahl 5 überschreitet?

Ich habe ein Skript erstellt, um automatische Backups auf meinem CentOS 7-Server auszuführen.
Die Backups werden im Verzeichnis /home/backup gespeichert. Das Skript funktioniert, aber jetzt würde ich gerne eine Möglichkeit einbauen, die Dateien zu zählen, nachdem die Sicherung durchgeführt wurde, und wenn die Anzahl größer als 5 ist, die älteste Sicherung löschen.

Unten ist, was ich für mein Backup-Skript habe.

#!/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

Danke
-Mike

Akzeptierte Antwort:

Sie könnten sich set -- /home/backup/databasebk_* ansehen und während $# größer als fünf ist, löschen Sie eine Datei.

Der Code würde also ähnlich aussehen wie

set -- /home/backup/databasebk_*
while [ $# -gt 5 ]
do
  echo "Removing old backup $1"
  rm "$1"
  shift
done

Dies funktioniert, weil die von Ihnen ausgewählten Dateinamen automatisch in der Reihenfolge „älteste zuerst“ sind.

Aus Konsistenzgründen würde ich eine Variable setzen (normalerweise nenne ich sie BASE aber du kannst es nennen wie du willst)

Also

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. So zählen Sie die Anzahl der Dateien und Unterverzeichnisse in einem bestimmten Verzeichnis

  2. So finden Sie die Anzahl der Dateien in einem Verzeichnis und Unterverzeichnissen

  3. Wie lösche ich ein Verzeichnis und einen Ordner in Linux?

  4. Was ist der beste Weg, um die Anzahl der Dateien in einem Verzeichnis zu zählen?

  5. Zählen der Anzahl der Dateien in einem Verzeichnis mit C

So sichern Sie Dateien und Verzeichnisse mit Rsync unter Linux

So löschen Sie Dateien und Verzeichnisse mit dem Terminal in Debian 10

So zählen Sie die Anzahl der Dateien und Unterverzeichnisse in einem Verzeichnis

So zählen Sie Dateien im Verzeichnis unter Linux

Zählen Sie die Anzahl der Dateien in einem Verzeichnis in Linux

So zählen Sie die Anzahl der Dateien in einem Verzeichnis in Linux