用 Crontab 進行簡單的備份日誌任務計畫

2021-09-30 19:34:37 字數 1870 閱讀 9048

萌新在實驗樓學習linux做實驗的時候遇到的,有點小小的麻煩,所以記錄下過程

小明是乙個伺服器管理員,他需要每天備份論壇資料(這裡我們用alternatives.log日誌替代),備份當天的日誌並刪除之前的日誌。而且備份之後檔名是年-月-日的格式。alternatives.log/var/log/下面。

shiyanlou使用者新增計畫任務

每天凌晨 3 點的時候定時備份alternatives.log/home/shiyanlou/tmp/目錄

命名格式為年-月-日,比如今天是2023年4月1日,那麼檔名為2017-04-01這個任務分兩步

第一步是先將 /home/shiyanlou/tmp/ 目錄下的alternatives.log日誌備份到 /home/var/log/ 目錄

第二步是將原來存放日誌 /home/shiyanlou/tmp/ 目錄下的所有日誌刪除

實驗樓的虛擬主機環境和真實環境不一樣,所以要先安裝並啟動rsyslog

$sudo apt-get install -y rsyslog

$sudo service rsyslog start

安裝完成後啟動crontab

$sudo cron -f &

進入crontab建立

$crontab -e

第一次啟動時,會讓選擇用那個方式編輯,萌新2,3都可以使用的

這裡了,先簡單的介紹下 crontab命令格式

通過 crontab 命令,我們可以在固定的間隔時間執行指定的系統指令或 shell script 指令碼。時間間隔的單位可以是分鐘、小時、日、月、周的任意組合。

這裡我們看一看crontab 的格式,下圖中從左到右分別時min,hour,day,month,day of week

每個欄位的輸入都有限制,並且給出了解釋

任務第一步,備份日誌到指定目錄

0  3  * * * cp /home/var/log/alternatives.log /home/shiyanlou/tmp/$(date+\y%\m%\d%)

解釋 :

根據上面的任務目標是凌晨3點

第一位,min為0

第二位,的hour我們填寫3

第三位,用 * 代表任意天數

第四位,用 * 代表任意月數

第五位,用 * 代表一周的任意天數

cp /home/var/log/alternatives.log /home/shiyanlou/tmp/$(date+\y%\m%\d%)

任務提示要選用當前的時間名字作為備份後的日誌名稱

當前時間是乙個變數所以,用$,%在這裡代表結束符,所以要用 \ 轉義,後面給出日期的格式

「 % 」 在 crontab 檔案中,有結束命令列、換行、重定向的作用,前面加 」 \ 」 符號轉義,否則,「 % 」 符號將執行其結束命令列或者換行的作用,並且其後的內容會被做為標準輸入傳送給前面的命令。

任務第二步,刪除原日誌儲存目錄

cp /home/var/log/alternatives.log /home/shiyanlou/tmp/$(date+\y%\m%\d%) || rm /home/var/log/*.log

因為是兩個命令,所以用 || 管道符隔開,|| 意思是如果前面的命令可以執行,則執行後面的命令

用 crontab 每天定時備份 MySQL

用 crontab 每天定時備份 mysql 利用系統 crontab 來定時執行備份檔案,按日期對備份結果進行儲存,達到備份的目的。1 建立儲存備份檔案的路徑 mysqldata mkdir mysqldata 2 建立 usr sbin bakmysql 檔案 vi usr sbin bakmy...

用RMAN進行Oracle的加密備份

資料缺口的年表 一旦資料離開了oracle資料庫的安全機制,它就極容易被偷取。在oracle 10g release 2 oracle 10gr2 中,你可以對匯出的備份檔案進行加密,而不需要使用第三方工具對它進行加密和解密了。在恢復這些備份檔案的時候,oracle會自動對這些資料進行解密。在ora...

用RMAN進行自動備份的指令碼

上次寫了乙個用exp進行備份的批處理指令碼,反響不錯,參見 受此鼓舞,所以此次將維護產品資料庫的rman指令碼貢獻出來。這個指令碼比上個指令碼更具衝擊力。簡要介紹如下 背景 現在許多產品資料庫都需要維護,而且要求做到24 7,資料量又大,況且還有的資料庫為rac資料庫,在這種情況下,rman備份的優...