Trending News
Linux shell script自動每日備份語法
我想請問在Linux底下的Shell script備份語法。我是想搭配cron job自動排程來實現自動備份功能。我先講一下我的環境:
1.我的Linux系統是CentOS 5.x版
上面跑的是論壇程式,所以每天都會有人發帖,代表每天都有新帖和附件。
2.每天的附件會依照日期,自動生成day_110420, day_110421, day_110422...etc (後面數字代表2011年04月21日)
我的備份需求:
1.每天凌晨01:00執行備份。(這點我可以透過Linux的cron job去排程)
2.在備份開始前,要先確認系統的日期(時間不用確認),例如目前是2011年04月5日,則備份day_110404目錄。雖然當天是5號,但5號當天還沒結束,所以不備份5號當天的目錄,只備份前一天。(注意:當天只會備份昨天的資料,並不會包含前天以及更之前的目錄)
3.若今日是5號,在系統中找不到day_110404目錄,則不備份。(這點簡單說,就是找不到昨天日期的資料夾,則不備份)希望有Linux shell scipt高手能幫忙。
To Evan.Tuning,
謝謝你告知可以用rsync,我剛照著你的方法執行了一次,的確是可以在我指定的目的目錄裡面,備份來源目錄的資料夾。
可是我是希望打包並壓縮成一個檔案,副檔名通常是tgz or tar.gz這種。
我的原意是每天都有一個tar包,這樣以後還原的時候,我只要傳輸一個tar包即可。
會需要打包的原因,是因為我在遠端的主機備份之後,會利用ftp傳輸回另一端,而另一端是Widnows機器,並不能執行rsync,所以才想要將遠端機器上的備份用打包的方式進行。
1 Answer
- Evan.TuningLv 610 years agoFavorite Answer
你的系統已經幫你把日期都調好了,就不用複雜的 shell script 來算日期,直接用 rsync 來差異備份就可以了,如此雖然連5號的也都有備份,但是,6號時,仍然會對5號產生的檔案作差異備份,甚至你可以訂每小時備份一次。rsync 還可以用來異地備份,但設定稍嫌「空靈」,在此不研究。
例:
# rsync -avzog SOURCE_DIR TARGET_DIR
另外要注意的是資料庫也要備份。要下資料庫 dump 的指令。
例如 mysql 要用 mysqldump。
2011-05-17 11:02:26 補充:
還是針對原來的需求,寫看看下面的程式
作天的寫法(http://www.cyberciti.biz/tips/linux-unix-get-yeste...
# date --date="1 days ago" +%y%m%d
110516
變數指派
# BACKUP_DIR=day_"`date --date="1 days ago" +%y%m%d`"
判斷目錄是否存在,若是 tar 起來
# test -d $BACKUP_DIR && tar -zcvf $BACKUP_DIR.tgz $BACKUP_DIR
2011-05-17 11:03:51 補充:
日期校正部分,啟動 ntpd ,讓它自動時間校正吧!
Source(s): 自己的實務經驗, http://linux.vbird.org/linux_basic/0340bashshell-s... http://linux.vbird.org/linux_basic/0340bashshell-s...