歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> Crontab命令完成大批量數據的自動備份

Crontab命令完成大批量數據的自動備份

日期:2017/2/27 9:35:02   编辑:更多Linux
  在UNIX系統中,為了使數據備份變得輕松、容易、安全,最好的辦法就是自動安排系統例行工作(系統調度),在系統空閒時間裡自動執行任務。如定期刪除一些流水文件、日志文件,定期完成數據的本地備份和異地備份等。這樣既發揮了UNIX系統的卓越功能,又減輕了系統管理員的工作量,使數據備份做到及時安全。    一、建立數據備份用戶  首先建立一個用戶,如:userbk,將該用戶的屬主、屬組設定為Informix,權限為755。在該用戶下存放備份的各種數據,以便統一備份到磁帶上或異地機器上。    二、用系統例行工作安排作業  UNIX系統有一個始終運行的守護進程,該進程可以在正常調度的間隙運行作業,用戶可以在一個文件中指定crontab命令運行任務,cron守護程序在初始化或該文件修改後自動讀取其內容。crontab文件中指定的各個域為:  分鐘 小時 月 日 星期幾 命令  如文件/usr/spool/cron/crontabs/root存放超級用戶調度的命令,內容為:  17 5  0 /etc/cleanup>/dev/null  0 2  0,4 /usr/lib/cron/logchecker  3 3 /usr/lib/cleantmp>/dev/null  1 3 /etc/setclk-rd1800>/dev/null 2>&1  #5 18 1-5/usr/lib/sa/sa2 -s 8:00 -e 18:01-i 1200-A  0 4 0 /etc/custom -V symlinks;#CUSTOM -SYMLINK -REPORT  0 0 1-5 scosh cronsched-r  0 01 scosh cronsched-wr    第一行的作用是在每周星期日5:17執行/etc/cleanup來清除系統上的某些日志文件。第二行的作用是每周星期日和星期四2:00執行/usr/lib/cron/logchecker來檢查守護進程cron的日志文件。第三行為每天3:03運行/usr/lib/cheantmp命令清除指定目錄中的臨時文件等。  用戶可以用命令crontab -u root -e來編輯此文件,在文件最後加入一行內容:  0 3  kill-user  此行內容為每天3:00運行kill-user,此命令文件的任務是終止某些用戶的進程。  同樣,用命令crontab-u userbk -e來編輯userbk文件,安排userbk用戶的作業任務,內容如下:  10 3 bdbf  30 5  0 FTP -invydbf.log  0 2  1 rm .log  第一行內容為每天3:10運行bdbf程序,使數據備份至/usr/userbk目錄下, 並拷貝到磁帶上。第二行內容為每周星期日5:30運行ydbf程序,將備份至/usr/userbk目錄下的數據通過網絡傳送到異地機器上存貯,並將備份信息寫入 ydbf.log日志文件中。第三行內容為每月1日2:00刪除/usr/userbk下的日志文件。    三、本地數據備份  筆者使用的操作平台為SCO Openserver5.04系統,數據庫為Informix4.0和Informix-Online7.3兩種版本。在Informix4.0上使用的業務有“人身保險”(用戶名rsbx)、“子女備用金保險”(用戶名zbbx)等。數據以字符串形式保存在各自的目錄下,備份時可用tar命令或cpio命令將整個用戶目錄備份即可。而在Informix-Online7.3上應用的有“綜合處理系統”(用戶名c4g1,庫名picc2.dbs),“會計記帳系統”(用戶名為claf,庫名account.dbs)等,數據存放在Online指定的設備上,平時采用ontape -s命令備份,但由於此命令實現自動備份較困難,並且不能和其它數據備份到一盤磁帶上,會造成備份介質的浪費。所以最好采用 dbeXPort命令備份數據。運行dbexport命令的前提是調用數據庫的相關用戶必須  退出,一旦有一個應用點沒有退出,備份就會失敗。為了確保數據的安全備份,需編制一個終止進程的命令文件,即前述中由超級用戶調度的kill-user程序。  程序1:/usr/bin/kill-user  ps -u rsbx >tmp-a  ps -u zbbx >>tmp-a  ps -u c4gl >>tmp-a  ps -u claf >>tmp-a  cut -cl-6 tmp-a >tmp-b  while read a  do  kill-9 $a  echo “kill alread$a”cat>>/tmp/kill-user.log  done RSBX;compress RSBX  find /usr/zbbx cpio-oacvB>ZBBX;compress ZBBX  …  rm-r.exp  dbexport -c picc2 -ss  find ./picc2.exp cpio-oacvB>PICC2;compress PICC2  dbexport -c account -ss  find ./account.exp cpio-oacvB>ACCOUNT;compress ACCOUNT  …  sleep 10  tar c8v .Z  date cat>>userbk.log  echo“PICC2 ACCOUNT RSBX ZBBX...backup over”cat>>userbk.log  程序中所設置的環境變量同Informix用戶的環境變量設置一樣,所有需要備份的數據用歸檔命令cpio拷貝至/usr/userbk目錄下,用戶可根據自已的實際情況自行添加,然後用tar命令統一將所有文件拷貝至磁帶上,最後將備份信息寫到日志文件userbk.log中,這樣系統管理員只需每天早晨上班後檢查一下是否備份好,然後更換一般磁帶即可。    四、異地數據備份  熟悉網絡的人都知道FTP的功能十分強大,它主要用於網絡之間的文件傳輸。一般情況下,用戶傳輸多個文件時,需登錄服務器逐一傳輸,只有等待一個文件傳送完畢之後才能傳輸下一個,這樣用戶需花很長時間守候在終端前等待一個文件傳輸結束。為了簡化工作,在UNIX平台上FTP支持非在線傳輸,即用戶只需把要輸入的命令逐條寫進shell腳本,FTP傳輸文件時調用腳本即可,例:對上述/usr/userbk目錄下的數據文件的異地備份,可用如下腳本來完成。  程序3:/usr/userbk/ydbf  open hostgs  user mybackup mypasswd  mpt .Z  bye  程序中的hostgs為異地的主機名。該主機名需在本地主機/etc/hosts文件中定義。mybackup、mypasswd是異地主機中為備份數據而建立的用戶名和口令字,當系統例行程序調用此程序時,可將數據全部備份至異地的hostgs主機中mybackup用戶下。    五、數據恢復  本地備份到磁帶上的數據可用tar x8v命令將數據文件拷貝到/usr/userbk目錄下。異地備份的數據可用FTP命令傳輸至該目錄下,或者直接用/usr/userbk目錄下的數據,用uncompress.Z解壓。  對於Informix4.0版以字符串形式存放的數據,可直接用cpio命令來恢復。如:rsbx用戶數據可用如下命令來恢復:  cpio -icduvB < RSBX  對於Informix-Online的數據恢復,需采用如下方法。如對picc2數據庫的恢復可用如下命令來恢復:  cpio -icduvB < PICC2  dbimport picc2 -d workdbs  其中,workdbs為Online建立的數據空間,須注意的是恢復數據庫時,原數據庫必須刪除。




Copyright © Linux教程網 All Rights Reserved