簡體   English   中英

使用bash腳本刪除文件名模式的文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM