1. 程式人生 > >Linux crontab 任務誤刪恢復及備份步驟

Linux crontab 任務誤刪恢復及備份步驟

鍵盤 The cto 你在 文件中 由於 line ffline 備份

crontab任務誤刪恢復及備份步驟

日常運維管理中,我們可能會碰到各種奇葩的問題,當然也包括誤操作。比如使用 crontab -e 命令執行編輯定時任務時,由於手抖或鍵盤舒適度(不失禮貌的笑臉)等問題,
誤寫成 crontab -r 。是的,你沒看錯,該賬戶下的 crontab 任務被清空。下面我們將進行 crontab 任務的恢復和備份操作。

說明??:

crontab -r :-r:從/var/spool/cron目錄中刪除某個用戶的crontab文件,如果不指定用戶,則默認刪除當前用戶的crontab文件。

crontab 任務的恢復

經查,CentOS 系統的 crontab 任務的日誌,打印在 /var/log/cron 之中。考慮過濾日誌:

cat /var/log/cron* | grep -i "某個用戶" | grep "CMD" | awk -F ‘(‘ ‘{print $3}‘ | awk -F ‘)‘ ‘{print $1}‘ | sort -u > crontab_tmp

說明??:

  • grep -i "某個用戶" :是為了過濾某個用戶的信息。比如你在test這個賬戶下誤操作“crontab -r”刪除當前用戶的crontab文件,那麽你可以使用 grep -i "test" 過濾test賬戶使用的
    命令。
  • 後續根據提取出來的命令再去 /var/log/cron文件中確認一下時間間隔,按照指定的方式恢復至/var/spool/cron/。

crontab 任務的備份

說明??:每天早上七點對crontab 進行備份 ,同時刪除7天前的數據

腳本如下:

backup_crontab.sh

#!/usr/bin/env bash

BACKUP_DIRECTORY="${HOME}/crontab_backup"

if [ ! -e "${BACKUP_DIRECTORY}" ]; then
        mkdir -p ${BACKUP_DIRECTORY}
fi

crontab -l > ${BACKUP_DIRECTORY}/$(date ‘+%Y%m%d‘).txt
find ${HOME}/crontab_backup -mtime +7 -name ‘*.txt‘ -exec rm -rf {};

把上面的腳本放在 crontab 定時任務中執行:

## backup_crontab
0 7 * * * cd /data/siterecoffline && sh backup_crontab.sh

Linux crontab 任務誤刪恢復及備份步驟