我正在編寫一個shell腳本來每天自動執行sql元數據備份。我陷入了兩者之間。我的做法是每天備份sql元數據,並刪除舊備份以保持最後3個備份的安全。請使用該命令幫助我刪除以前的備份,保留最後3次備份。用於遞歸sqlmetadata備份的shell腳本
FILE= mysql_metadata_backup_$(date '+%Y-%m-%d_%H-%M-%S').sql
mysqldump -u userID --all-databases > ${FILE}
我正在編寫一個shell腳本來每天自動執行sql元數據備份。我陷入了兩者之間。我的做法是每天備份sql元數據,並刪除舊備份以保持最後3個備份的安全。請使用該命令幫助我刪除以前的備份,保留最後3次備份。用於遞歸sqlmetadata備份的shell腳本
FILE= mysql_metadata_backup_$(date '+%Y-%m-%d_%H-%M-%S').sql
mysqldump -u userID --all-databases > ${FILE}
我想你可以使用bash參數擴展來實現你的目標。
將下面的bash腳本放在包含備份的文件夾中。
#!/bin/bash
file_list=($(ls -t mysql_metadata_backup*))
# The '-t' parameter of the 'ls' sorts the output according to modification time with newest displayed first.
rm $(echo ${file_list[@]:3})
# The ':3' does the magic slicing the array from the index 3
# All the files except the newest three are passed to the "rm" command.
運行它會刪除除最新三個之外的所有備份。
也許你可以考慮增加一個cron作業來自動化這個。
參考:
你可以使用'LS -t'了點。 – sjsam
什麼? – Naveen
它對輸出進行排序,最新的文件列在第一位。查看我的答案。我已經在腳本里面解釋了一些事情。 – sjsam