Linux下定時備份檔案
阿新 • • 發佈:2019-01-01
今天有人讓我給寫個指令碼,說是讓Linux定時備份檔案資料,並刪除超過一定時間的備份。聽起來很有意思,一番摸索之後成功了沒有呢?(因為是給對linux不太熟的人看,所以比較詳細)具體看下面吧:
一、 編寫指令碼
編寫一個指令碼檔案,使指令碼可以執行備份命令。
例如,將檔案目錄 /home/backups/balalala 備份到/home目錄下,並壓縮。
1. 建立指令碼
命令格式: touch 路徑/檔名.sh
例如:
輸入命令:touch /home/backup.sh
2. 寫入命令
首先進入指令碼:vi命令
vi /home/backup.sh
在指令碼內寫入:
#!/bin/sh
mkdir /home/beifen
#建立一個臨時檔案(要儲存備份的路徑)
cp -r /home/backups/balalala /home/beifen
#資料存在backups目錄下,備份到beifen目錄下,所以先將資料拷過來
tar -zcPvf /home/backup$(date +%Y%m%d).tar.gz /home/beifen
#將資料所在資料夾beifen打包
rm -rf /home/beifen/
#刪除臨時檔案內容
find ./ -mtime +30 -name "*.tar.gz" -exec rm -rf {} \;
#刪除改資料夾下超過30天的檔案
3. 執行指令碼檔案
直接手動執行指令碼檔案。
命令格式:sh 路徑/檔名.sh
例如:sh /home/backup.sh
二、 設定定時執行本指令碼。
例如:設定指令碼每7天執行一次。
1. 安裝crond
如果沒有安裝crond服務就先裝上服務。
檢查服務狀態:service crond status
2. 修改crontab內容
輸入命令:crontab –e
進入後繼續輸入命令:0 0 /7 * /home/backup.sh
設定為每7天執行一次指令碼檔案
然後,儲存退出:wq
sh指令碼前面五個欄位分別表示分鐘(0-59)、小時(0-23)、日(1-31)、月(0-12)、星期幾(0-6)後面的為指令碼所在目錄
3. 重新啟動crond服務
輸入命令:service crond restart