GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo contar la cantidad de archivos en un directorio y eliminar los más antiguos si el número supera los 5?

Creé un script para ejecutar copias de seguridad automáticas en mi servidor CentOS 7.
Las copias de seguridad se almacenan en el directorio /home/backup. El script funciona, pero ahora me gustaría incorporar una forma de contar los archivos después de que se realiza la copia de seguridad y, si el número es mayor a 5, eliminar la copia de seguridad más antigua.

A continuación se muestra lo que tengo para mi secuencia de comandos de respaldo.

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

Gracias
-Mike

Respuesta aceptada:

Podría mirar set -- /home/backup/databasebk_* y mientras $# es mayor que cinco, elimine un archivo.

Entonces el código sería similar a

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

Esto funciona porque los nombres de archivo que eligió están automáticamente en el orden "más antiguo primero".

Por coherencia, establecería una variable (normalmente la llamo BASE pero puedes llamarlo como quieras)

Entonces

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. Cómo contar la cantidad de archivos y subdirectorios dentro de un directorio dado

  2. ¿Cómo eliminar un directorio y una carpeta en Linux?

  3. Cuente las líneas de todos los archivos en el directorio de Ubuntu

  4. Contando el número de archivos en un directorio usando C

  5. ¿Cómo contar el número de archivos en cada directorio?

Cómo hacer una copia de seguridad de archivos y directorios usando Rsync en Linux

Cómo eliminar archivos y directorios usando la terminal en Debian 10

Cómo contar la cantidad de archivos y subdirectorios dentro de un directorio

Cómo contar archivos en el directorio en Linux

Contar el número de archivos en un directorio en Linux

Cómo contar el número de archivos en un directorio en Linux