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