2011-03-21 48 views
10

舊文件我用下面的crontab記錄,以每日備份我的DB:刪除使用crontab的

0 2 * * * MYSQL_PWD=password mysqldump -u user db_name > $HOME/db_backups/db_name-$(date +\%Y-\%m-\%d-\%H-\%M).sql 2>> $HOME/db_backups/cron.log 

我想添加其他的crontab記錄將刪除數據庫轉儲是年紀大了,然後一個月。

有什麼想法?

+0

使用logrotate(8) – knittl 2011-03-21 08:45:02

+0

@knittle logrotate用於日誌(?) – AlxVallejo 2012-08-30 22:37:53

+1

雖然logrotate可以刪除某個時代的文件,但它只能在旋轉的文件上運行;不是數據庫備份的典型場景。當然,您可以在logrotate配置中添加'find ... -exec rm {} \;命令(在其他答案中記錄)作爲腳本。這在某些情況下可能有用; [在另一個論壇上的對話線索的最後輸入中的示例](http://www.directadmin.com/forum/archive/index.php/t-3654.html) – 2012-10-11 16:20:36

回答

19

只需創建另一個的cron:

0 3 * * * find $HOME/db_backups -name "db_name*.sql" -mtime +30 -exec rm {} \; >> $HOME/db_backups/purge.log 2>&1 

它會找到所有備份超過30天,並刪除它們。

+0

我們可以將要刪除的文件名寫入檔案以供參考。 – 2013-12-05 16:14:02

+0

當然,你可以使用'rm -v'或'find -print'來輸出被刪除文件的名字。 – dogbane 2013-12-06 08:58:34

25
find /db_backups/ -mtime +30 -delete 

該命令將刪除超過30天的數據庫備份。

3

有一個名爲tmpreaper的工具,可安全刪除符合某些條件的文件,例如過去的訪問日期或修改日期n天。