CentOS7サーバーで自動バックアップを実行するスクリプトを作成しました。
バックアップは/home/backupディレクトリに保存されます。スクリプトは機能しますが、バックアップが実行された後にファイルをカウントする方法を組み込み、数が5を超える場合は、最も古いバックアップを削除します。
以下は、バックアップスクリプト用に用意したものです。
#!/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
ありがとう
-マイク
承認された回答:
set -- /home/backup/databasebk_*
を見ることができます $#
5より大きい場合は、ファイルを削除してください。
したがって、コードは次のようになります
set -- /home/backup/databasebk_*
while [ $# -gt 5 ]
do
echo "Removing old backup $1"
rm "$1"
shift
done
これが機能するのは、選択したファイル名が自動的に「最も古いものから順に」なるためです。
一貫性を保つために、変数を設定します(通常はBASE
と呼びます ただし、好きなように呼び出すことができます)
だから
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