1. 程式人生 > >centos自動刪除過期檔案

centos自動刪除過期檔案

此文轉載於www.51jb.net

最近有個需求,就是rsync每次同步的資料量很多,但是需要保留的資料庫bak檔案

保留7天就夠了,所以需要自動清理資料夾內的bak檔案

解決方案:

利用shell指令碼來定期刪除資料夾內的任務

1、建立shell檔案

[[email protected] script]# vim backup_sql_clean.sh
#!/bin/sh
find /data1/backup/KDKDA\$AGKDPAYKT/XNAKSD/FXUIJ -mtime +10 -name "*.bak" -exec rm -rf {} \;

引數說明:

/data1/backup/KDKDA\$AGKDPAYKT/XNAKSD/FXUIJ  #這個是檔案的路徑path

-mtime +10 #這個是保留的天數,10就是10天

-name "*.bak"  #這個是要刪除檔案的名稱,這邊加字尾就是刪除這個型別的檔案

其他的是Linux的命令

2、設定shell檔案許可權

[[email protected] script]# chown 777 backup_sql_clean.sh

3、設定crontab週期執行

crontab命令用於設定週期性被執行的指令

crontab相關命令說明:https://www.jb51.net/article/151069.htm

[[email protected] /]# crontab -e
0 0 * * 7 /data/script/backup_sql_clean.sh

4、啟動crond程序

crond的概念和crontab是不可分割的。crontab是一個命令,常見於Unix和類Unix的作業系統之中,用於設定週期性被執行的指令。

該命令從標準輸入裝置讀取指令,並將其存放於“crontab”檔案中,以供之後讀取和執行。而crond正是它的守護程序。

[[email protected] /]# systemctl status crond.service #檢視crond狀態
[[email protected] /]# systemctl start crond.service #啟動crond服務
[[email protected]
/]# systemctl restart crond.service #重啟crond服務

補充;

下面介紹下centOS7定時刪除檔案

1、進入linux系統

2、在任意目錄建立一個sh字尾的檔案,如:

3、編輯開啟該檔案,如圖:

4、此時按鍵盤上的“i”鍵或者“insert”鍵,進入編輯模式

輸入:

#!/bin/sh
find /data/iqmkj/backup/mysql -mtime +7 -name "*.sql" -exec rm -rf {} \;

如圖:

說明:

“/data/iqmkj/backup/mysql” :要刪除的檔案所在的目錄。
“+7” :檔案保留天數,即幾天前的檔案將被刪除。
“*.sql”:刪除檔案字尾為.sql的檔案。
其他為固定字元。

5:儲存編輯的檔案

按一下鍵盤上的“esc”鍵,再在當前視窗輸入":wq"。檔案即儲存成功並自動退回到主介面。

6、給檔案授權

輸入:

chown 777 backup_mysql.sh

如果授權不成功,則直接選中該檔案右鍵設定許可權中全部勾選或者設定“777”。

7:利用centos7的定時任務建立一個定時器

在主介面輸入”crontab -e”,進入定時任務編輯介面。

8、設定定時任務

插入“0 4 * * * /data/iqmkj/backup/mysql/backup_mysql_clean.sh”。
說明:
其中的檔案路徑為第二步中建立的檔案路徑。

9、儲存定時任務配置

按一下鍵盤上的“esc”鍵,再在當前視窗輸入":wq"。檔案即儲存成功並自動退回到主介面。

10、啟動定時器

在主介面輸入“/bin/systemctl start crond.service”。至此全部配置完成。

說明:

啟動定時任務:/bin/systemctl start crond.service
停止定時任務:/bin/systemctl stop crond.service
重啟定時任務:/bin/systemctl restart crond.service
檢視定時任務狀態:/bin/systemctl status crond.service