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