[英]Delete files with filename pattern using bash script
我有這個bash腳本,使用crontab運行時每5分鍾創建一個數據庫備份。 在一天結束時,我想刪除創建的那些,並保留當天創建的最后一個。
這是腳本的內容:
#! /bin/bash
DATE=$(date +"%Y%m%d%H%M")
mysqldump -ubackup_user db_to_backup > ~/backup/db_$DATE.sql
tar -zcvf ~/backup/db_$DATE.tar.gz ~/backup/db_$DATE.sql
rm ~/backup/db_$DATE.sql
創建的樣本文件:
db_201312272300.tar.gz
db_201312272305.tar.gz
db_201312272310.tar.gz
db_201312272315.tar.gz
db_201312272320.tar.gz
db_201312272325.tar.gz
db_201312272330.tar.gz
db_201312272335.tar.gz
db_201312272340.tar.gz
db_201312272345.tar.gz
db_201312272350.tar.gz
db_201312272355.tar.gz
db_201312280000.tar.gz
db_201312280005.tar.gz
db_201312280010.tar.gz
db_201312280015.tar.gz
它應該在一天結束時留下以下內容:
db_201312280000.tar.gz
db_201312280005.tar.gz
db_201312280010.tar.gz
db_201312280015.tar.gz
並將以下文件復制/移動到其他目錄:
db_201312272355.tar.gz
午夜之后,運行以下命令:
old=$(date +"%Y%m%d" -d yesterday)
mv "db_${old}2355.tar.gz" different/directory && rm "db_${old}*.tar.gz"
為了安全起見,我將移動和刪除命令與&&
相連。 這樣,僅當成功移動2355備份時,才刪除昨天的備份。 如果磁盤空間不足並且不關心備份完整性,請用&&
替換&&
;
(或換行符)。
另外,按照問題中的腳本,如果僅一個文件進入tar文件,則tar
是多余的。 您可以將這兩行替換為:
mysqldump -ubackup_user db_to_backup | gzip >~/backup/db_$DATE.gz
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.