Saya telah membuat skrip untuk menjalankan pencadangan otomatis di server CentOS 7 saya.
Cadangan disimpan ke direktori /home/backup. Skripnya berfungsi, tetapi sekarang saya ingin memasukkan cara menghitung file setelah pencadangan terjadi dan jika jumlahnya lebih dari 5, hapus cadangan terlama.
Di bawah ini adalah apa yang saya miliki untuk skrip cadangan saya.
#!/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
Terima kasih
-Mike
Jawaban yang Diterima:
Anda dapat melihat set -- /home/backup/databasebk_*
dan sementara $#
lebih besar dari lima, hapus file.
Jadi kodenya akan terlihat mirip dengan
set -- /home/backup/databasebk_*
while [ $# -gt 5 ]
do
echo "Removing old backup $1"
rm "$1"
shift
done
Ini berfungsi karena nama file yang Anda pilih secara otomatis dalam urutan "terlama pertama".
Untuk konsistensi saya akan menetapkan variabel (saya biasanya menyebutnya BASE
tetapi Anda dapat menyebutnya apa pun yang Anda suka)
Jadi
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