當您意識到自己不小心刪除了所有的crontab條目時,您是否曾經經歷過令人心動的時刻?如果您點點頭,那麼您並不孤單。不久前我也犯了這個錯誤。
鑑於“ R”和“ E”鍵的距離,偶然地運行crontab -r是一個錯誤,即使是經驗豐富的Linux用戶也可能發生。
Crontab -r命令刪除了所有計劃的Cron作業,眾所周知,錯誤地運行了錯誤,尤其是因為它危險地接近crontab -e,它是編輯這些條目的命令。
但是不用擔心!在這篇文章中,我們將詳細介紹如何恢復丟失的crontab條目,如何定期備份crontab條目以及防止crontab條目在將來偶然刪除的策略。
目錄
不久前,我打算運行crontab -e來編輯我的預定作業,但我的手指背叛了我,而是去了crontab -r。突然,我所有精心計劃的Cron工作都消失了。
由於鍵“ e”和“ r”在鍵盤上彼此相鄰,因此我不小心運行了crontab -r命令,而不是crontab -e,在眼睛的眨眼中,我失去了所有的crontab條目。
對於那些想知道的人,Crontab -R命令刪除了當前用戶的crontab而無需任何確認提示,這可能會導致所有計劃的Cron作業的丟失。
這個錯誤很容易犯,尤其是在忙碌的一天的壓力或多任務處理的壓力下。
這是您可以解決情況並防止未來事件的方法。
首先,深吸一口氣。這種情況可能不像看起來那樣可怕。雖然Unix和Linux系統沒有針對Crontab -R的“撤消”按鈕,但是您可以在一些地方尋找備份:
一旦您恢復了crontab條目(或者不幸的是,如果沒有),則至關重要的是啟動備份程序以避免將來的頭痛。
為了防止未來的損失,以下是一些備份Crontab條目的策略:
您應該養成手動備份孔朗特(Crontab)條目之前進行編輯之前的習慣。雖然手動備份總比沒有好,但他們依靠您記得做它們。
要手動備份您的crontab,請運行:
$ crontab -l>〜/backup_crontab.txt
將此備份存儲在安全位置,可能是在版本控制的存儲庫或云存儲服務中。
設置每日Cron工作以自動備份您的crontab條目是確保您始終擁有Cron Jobs的副本的絕佳方法。
這種做法大大降低了由於意外刪除或其他不可預見的問題而導致數據丟失的風險。這是一個簡單的示例,說明如何設置這樣的Cron工作:
使用crontab -e命令編輯crontab,並在特定時間自動備份crontab條目中添加類似的新行:
0 1 * * * crontab -l>/path/to/backup/directory/crontab_backup _ $(date \%y- \%m- \%m- \%d).txt
用自己的路徑替換/路徑/備份/目錄/。
該命令每天在凌晨1點為您的crontab條目創建一個備份,其中包含備份日期的文件名,可在需要時易於跟踪和還原。
上述方法有一個問題。它將每天凌晨1點繼續創建新文件。這是低效的,因為備份目錄將無限期地增長。
為了防止這種情況,您可以考慮為備份實施旋轉和清理系統。這樣,您只需維護一定數量的近期備份文件就可以防止備份目錄的增長。
我製作了一個簡單的腳本,可以做到這一點。它將您的crontab條目備份到特定目錄中的文件中。另外,一段時間後,它會自動擺脫較舊的備份。
這樣,您的備份文件夾就保持整潔,不再充滿您不再需要的舊文件。
創建備份腳本:
首先,創建一個腳本,將您當前的crontab條目保存到文件中。您可能需要在文件名中包含時間戳,以跟踪隨著時間的流逝。
這是一個基本腳本示例。
創建一個文件,例如〜/cron_backup.sh,其中包含以下內容:
#!/bin/bash #定義備份目錄和文件名 backup_dir =“ $ home/cron_backups” file_name =“ crontab_backup _ $(date'%y-%m-%d')。txt” #保留備份的天數 days_to_keep = 30 #確保存在備份目錄 mkdir -p“ $ backup_dir” #保存文件的crontab條目 crontab -l>“ $ backup_dir/$ file_name” #刪除備份文件比指定的天數年齡 查找“ $ backup_dir” -name'crontab_backup _*。txt'-type f -mtime $ days_to_keep -exec -exec rm {} \;
該腳本旨在備份您的crontab條目並管理這些備份,以防止您的備份目錄變得混亂。
這是該腳本如何工作的細分,一步一步:
通過運行此腳本,您每次都會自動為crontab條目創建新的備份,並通過刪除比一定數期大的備份來保持備份目錄清潔。這種方法有助於保持最新的crontab條目歷史,而無需手動管理備份。
保存文件並關閉。然後通過運行使其可執行:
$ chmod x〜/cron_backup.sh
安排備份工作:
接下來,安排此腳本每天通過您的crontab運行。用crontab -e編輯crontab,並為備份腳本添加新行。例如,要在1:00 AM每天運行備份,您將添加:
0 1 * * */bin/bash $ home/cron_backup.sh
此設置可確保每天都可以安全地存儲在指定的目錄中的crontab。
將您的crontab文件存儲在諸如git之類的版本控制系統(VC)中。這不僅可以備份文件,而且還可以保留更改的歷史記錄,從而使您可以在必要時恢復到以前的版本。
確保您的備份策略包括系統級備份,以捕獲系統的整個狀態,包括所有用戶crontabs。
我們已經在博客上審查並發布了有關各種備份工具的指南。請探索我們的檔案,以找到最適合您需求的檔案。
其他提示:
如果您不小心運行crontab -r並刪除了crontab條目,但是您一直在定期備份它們,如上一節中所討論的那樣,恢復crontab是簡單的。
這是您可以從備份中恢復crontab條目的方法:
1。找到您最近的備份文件:
首先,您需要找到crontab的最新備份。如果您遵循示例備份策略,則您的備份將位於特定目錄(例如$ home/cron_backups)中,並用日期郵票命名以易於識別。
2。查看備份內容:
在恢復之前,最好查看備份文件的內容,以確保其包含預期的crontab條目。您可以使用諸如CAT或更少的命令查看文件:
$ cat $ home/cron_backups/crontab_backup _ $(日期'%y-%m-%d')。txt
如果尚未創建今天的備份,或者您需要從特定日期恢復,請相應地調整命令中的日期。
3。從備份恢復crontab :
一旦確定了正確的備份文件並確認了其內容,就可以通過將crontab命令與備份文件一起作為輸入來還原crontab條目:
$ crontab $ home/cron_backups/crontab_backup _ $(日期'%y-%m-%d')。txt
同樣,調整命令中的日期以匹配您打算用於修復的備份文件。
4。驗證修復:
恢復後,至關重要的是要驗證您的crontab是否已正確恢復並包含所有預期的條目。使用crontab -l命令列出當前的crontab條目:
$ crontab -L
檢查針對您的備份的列出的條目,以確保修復過程成功。
修復技巧:
最後,讓我們談談如何防止將來發生這個錯誤。
在您的個人資料腳本中使用-I選項添加一個別名,這是一種智能有效的方法,可以防止意外刪除crontab條目。
Crontab的-I選項提供了交互提示,該提示在刪除crontab之前要求確認,這可以防止無意間的cron工作損失。
設置別名:
您可以在外殼配置文件中創建一個別名,以使用crontab -i覆蓋crontab -r,該crontab -i迫使命令在刪除任何內容之前要求確認。
將以下行添加到您的〜/.bashrc,〜/.bash_profile或等效:
別名crontab ='crontab -i'
將別名添加到所選的個人資料腳本後,您需要應用更改。要識別更改,您可以:
例如,如果將別名添加到〜/.bashrc中,則可以運行:
$源〜/.bashrc
測試別名:
為了確保您的別名按預期運行,您可以通過嘗試刪除非關鍵或臨時克朗塔布的輸入來以安全的方式進行測試。運行crontab -r時,現在應該看到提示要求確認,類似:
crontab:真的刪除了crontab嗎? (Y/N)
該提示是您確認該別名正常工作,並將有助於防止未來的意外crontab刪除。
習慣性雙檢查:
在按Enter之前培養雙重檢查命令的習慣。這似乎是一件小事,但可以為您節省很多麻煩。
不小心刪除您的crontab條目是一種令人沮喪的經歷,但這並不是世界的盡頭。通過遵循以下步驟和技巧,您可以輕鬆恢復意外刪除的crontab條目。
您還可以通過使用我們的簡單的Shell腳本自動備份crontab條目來避免這種不幸。
以上是如何防止crontab條目在Linux中意外刪除的詳細內容。更多資訊請關注PHP中文網其他相關文章!