2015-06-04 66 views
1

如何創建一個cronjob,每6pm創建一次/ etc/passwd的備份。Shell腳本每隔6pm備份/ etc/passwd

這應該是輸出:

passwd_<date>.tar.gz 

我在Shell腳本是新的,試圖弄明白。我讀了關於cron和crontab,但是,我不知道如何使用shell腳本創建備份..有人可以幫助我..例子非常感謝。提前致謝。

+0

您可能還需要備份'shadow'用'passwd'一起,可能還有相應的'db'文件(如果您有配置在'nsswitch.conf' )。 – lcd047

回答

0

使用crontab與選項-e直接編輯的cronjob:

crontab -e 

中的cronjob的規格是:

minute hour day month day-of-week command-line-to-execute 

以下組的作業在6:00運行日常PM

0 18 * * * tar -czf passwd_`date | tr ' ' '_' | tr ':' '_'`.tar.gz /etc/passwd 

該命令可以是腳本,在t他的情況是一個簡單的tar命令。文件的名稱形成,調用date命令,將空格和冒號轉換爲下劃線。這將創建類似的文件名如下:

passwd_Sun_May__3_13_13_00_CDT_2015.tar.gz 
1

可能是作爲crontab條目簡單:

下有人能夠寫入/etc(如根)的權限運行。

在早上6點,每天晚上,這叫gzip使用/etc/passwd作爲輸入和輸出發送到格式的文件:

/etc/passwd_YYYY-MM-DD.gz 

如果你有date一個變體不具有-I ISO輸出標誌,則可以使用稍微更詳細的date +\%Y-\%m-\%d,但請記住\%轉義僅在crontab文件中需要。

There's no real由於您只是將一個文件放在那裏,因此需要創建tar.gz文件。其實,老實說,我會質疑是否需要壓縮它,因爲它不可能很大。例如,我的密碼文件從2282字節壓縮到873字節,但即使在未壓縮的大小下,我也可以很高興地滿足數萬年的備份需求 - 每個世紀約爲83M。

如果你感到快樂,只是副本文件,你可以使用類似:

0 18 * * * cp /etc/passwd /etc/passwd_$(date -I) 
+0

至少在GNU系統上,考慮使用'date -I'來獲得更多的標準輸出%) – GreyCat

0

編輯的crontab用crontab -e命令 加入這一行: 0 5 * * * CP /等/ passwd文件/ etc/passwd文件_ $(日期+%A_%D_%Y-%H:%M:%S)

0

要使用特定的crontab條目是:

0 18 * * * tar -zcf /etc/passwd_`date "+%Y-%m-%d"`.gz /etc/passwd 

這說每天18:00(6pm)運行命令創建一個包含/ etc/passwd的壓縮tar文件(.tar.gz)。你沒有說你想放置tar文件的位置,所以這個例子把它放在/ etc目錄中。您可以簡單地將第一個/ etc /修改爲不同的目錄。確保它是一個完整的路徑,因爲cron沒有任何當前目錄的概念。

文件名的日期部分由date +%Y-%m-%d生成,它將生成「2015-06-04」形式的日期,因此生成的文件名將爲passwd_2015-06-14.tar.gz date命令根據後面的格式字符輸出格式化的日期。您可以使用「man strftime」查看所有可能的代碼列表,以便您可以根據自己的喜好生成日期字符串。各種格式都是可能的。例如

date "+%e%b%Y" 

會生成3Jun2015。請務必不要包含空格,因爲它們看起來像tar命令的單獨參數,而不是文件名的一部分。如果需要,使用 - 或_作爲分隔符。您可以通過在命令行鍵入此日期命令來實現此操作,以生成所需的格式。

有多種方式可以編輯你的crontab文件。最簡單的(假設你知道如何使用默認的「六」編輯器)是通過鍵入

crontab -e 

crontab文件(空白先)在編輯器中打開並提交,當你退出編輯器與cron。