GNU/Linux >> Znalost Linux >  >> Linux

Jak spočítat počet souborů v adresáři a odstranit nejstarší, pokud počet překročí 5?

Vytvořil jsem skript pro spouštění automatických záloh na mém serveru CentOS 7.
Zálohy se ukládají do adresáře /home/backup. Skript funguje, ale nyní bych rád začlenil způsob, jak spočítat soubory po provedení zálohy, a pokud je počet větší než 5, odstranit nejstarší zálohu.

Níže je uvedeno, co mám pro zálohovací skript.

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

Díky
-Mike

Přijatá odpověď:

Můžete se podívat na set -- /home/backup/databasebk_* a zatímco $# je větší než pět, odstraňte soubor.

Kód by tedy vypadal podobně jako

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

Funguje to, protože názvy souborů, které jste vybrali, jsou automaticky v pořadí „nejstarší jako první“.

Pro konzistenci bych nastavil proměnnou (normálně ji nazývám BASE ale můžete tomu říkat, jak chcete)

Takže

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. Jak spočítat počet souborů a podadresářů v daném adresáři

  2. Jak odstranit adresář a složku v Linuxu?

  3. Spočítejte řádky všech souborů v adresáři Ubuntu

  1. Jak zjistit počet souborů v adresáři a podadresářích

  2. Jak najít nejstarší soubor ve stromu adresářů v Linuxu

  3. Jak získat počet souborů v adresáři pomocí příkazového řádku?

  1. Jaký je nejlepší způsob, jak spočítat počet souborů v adresáři?

  2. Počítání počtu souborů v adresáři pomocí C

  3. Jak spočítat počet souborů v každém adresáři?