GNU/Linux >> Linux Esercitazione >  >> Linux

Come contare il numero di file in una directory ed eliminare il più vecchio se il numero supera 5?

Ho creato uno script per eseguire backup automatici sul mio server CentOS 7.
I backup vengono archiviati nella directory /home/backup. Lo script funziona, ma ora vorrei incorporare un modo per contare i file dopo il backup e se il numero è superiore a 5, eliminare il backup più vecchio.

Di seguito è riportato ciò che ho per il mio script di backup.

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

Grazie
-Mike

Risposta accettata:

Puoi guardare set -- /home/backup/databasebk_* e mentre $# è maggiore di cinque, elimina un file.

Quindi il codice sarebbe simile a

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

Funziona perché i nomi dei file che hai scelto sono automaticamente nell'ordine "dal meno recente".

Per coerenza imposterei una variabile (normalmente la chiamo BASE ma puoi chiamarlo come preferisci)

Quindi

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. Come contare il numero di file e sottodirectory all'interno di una determinata directory

  2. Come trovare il numero di file in una directory e sottodirectory

  3. Come eliminare una directory e una cartella in Linux?

  4. Come ottenere un conteggio di file in una directory utilizzando la riga di comando?

  5. Come contare il numero di file in ogni directory?

Come eseguire il backup di file e directory utilizzando Rsync in Linux

Come eliminare file e directory utilizzando il terminale in Debian 10

Come contare il numero di file e sottodirectory all'interno di una directory

Come contare i file nella directory su Linux

Conta il numero di file in una directory in Linux

Come contare il numero di file in una directory in Linux