![]() |
| 新浪首頁 > 科技時代 > FreeBSD使用大全連載 > FreeBSD連載(32):系統備份 |
![]() |
系統備份不管系統是多么可靠,總會發生一些意想不到的事情,致使系統數據丟失。例如硬件故障或人為操作失誤等。因此使 用備份來保護數據不丟失是一種非常重要的手段,尤其在系統數據非常重要的時候。經常進行數據備份能夠減少偶然破壞造成 的損失,保証系統能夠從錯誤中恢復正常運行。
在進行備份之前,首先要選擇使用的備份策略,這將決定何時需要進行備份,以及出現故障時進行恢復的方式。通常 使用的備份方式有三種: 完全備份:每隔一定時間就對系統進行一次全面的備份,這樣在備份間隔期間出現數據丟失等問題,可以使用上一次 的備份數據恢復到前次備份時情況。這是最基本的備份方式,但是每次都需要備份所有的數據,并且每次備份的工作量也很大 大,需要太多的備份介質,因此這種備份不能進行的太頻繁,只能每隔一段較長時間才進行一次完整的備份,例如以一個月為 一個備份周期。但是這樣一旦發生數據丟失,只能恢復到上次備份的數據,這個月內更新的數據就有可能丟失。 增量備份:首先進行一次完全備份,然后每隔一個較短時間進行一次備份,但僅僅備份在這個期間更改的內容。當經 過一個較長的時間后再重新進行一次完全備份,開始前面的循環過程。由于只有每個備份周期的第一次進行完全備份,其他只 進行改變的文件的備份,因此工作量小,就能夠進行更頻繁的備份。例如以一個月為一個周期,一個月進行一次完全備份,每 天晚上0點進行這一天改變的數據備份。這樣一旦發生數據丟失,首先恢復前一個完全備份,然后按日期一個一個恢復每天的 備份,就能恢復到前一天的情況。這種備份方法比較經濟。 更新備份:這種備份方法與增量備份相似,首先每月進行一次完全備份,然后每天進行一次更新數據的備份。但不同 在于,增量備份是備份該天更改的數據,而更新備份是備份從上次進行完全備份后更改的全部數據文件。一旦發生數據丟失, 可以使用前一個完全備份恢復到前一個月的狀態,再使用前一個更新備份恢復到前一天的情況。這樣做的缺點是每次作小備份 工作的任務比增量備份的工作量要大,但好處在于,增量備份每天都有備份,因此要保存數據備份數量太多,而更新備份則不 然,只需保存一個完全備份和一個更新備份就可以恢復故障以前的狀態。另外在進行恢復工作時,增量備份要順序進行多次備 份的恢復,而更新備份只需兩次恢復,因此它的恢復工作相對簡單。 增量備份和更新備份都能以比較經濟的方式對系統進行完全備份,在這些不同的策略之間進行選擇不但與系統數據更 新的方式相關,也依賴于管理員的習慣。通常在系統數據更新不是太頻繁的話,可以選用更新備份的方式。但是如果系統數據 更新太快,使每個備份周期后面几次更新備份的數據量已經相當大,這樣使用更新備份已經不太經濟了。這時候可以考慮增量 備份或混用更新備份和增量備份的方式,或者縮短備份周期。
FreeBSD下SCSI接口的磁帶設備文件名為/dev/rsa0或/dev/nrsa0,其中n代表非回 卷類型,每次在nrsa0上存儲數據之后磁帶沒有回卷,這樣就能在磁帶中保存多次備份。而rsa0設備在每次保存數據 并關閉磁帶時會回卷,這樣只能存儲一次備份。由于磁帶容量大,一次不會用完一個磁帶的容量,因此一般使用nrsa0設 備,以進行多次備份。 3.1-release之前使用老SCSI驅動程序的磁帶設備為st,對應的設備文件就為rst0和nrst 0,而非SCSI的磁帶設備有rwt0,rft0,分別為IDE和軟盤控制器接口的磁帶設備。 n表示非回卷模式,r代表raw方式,代表字符設備。而sa為磁帶設備的驅動程序名。0表示設備序號,如果有 多個磁帶,下一個設備將為rsa1。 一般使用/dev/nrsa0作為備份設備,因為這個設備是非回卷的,那么每次備份之后磁帶仍然停留在最后移 動的位置上,這樣就可以在下次備份時接續往磁帶中寫入,使用一個磁帶進行多次備份。但是如果讀取具體的備份,必須使磁 帶卷到具體備份的起始位置才行。需要回卷磁帶要使用mt命令來完成。 # mt /dev/nrsa0 rewind 回卷磁帶到最開始地方﹔ # mt /dev/nrsa0 reten 先向前卷到尾部再回卷磁帶,保持磁帶前后松緊一致﹔ # mt /dev/nrsa0 fsf 1 跳到下一個備份文件,使用2將跳到下面第二個文件﹔因此要定位一個磁帶上第4次備份的文件,可以使用rete n回卷磁帶,再使用fsf 4跳到第4個備份。 每次使用mt均需使用mt來確定磁帶的位置,一般的應用程序并不能自動確定文件的開頭,而在磁帶上每兩個備份 文件當中必然有一段無用的數據,如果再讀完一個備份之后立即去讀取下一個備份文件,就不能識別這些備份文件之間的無用 信息,必然導致報告錯誤。
選定了備份方式之后,可以使用tar、cpio、dump等備份工具軟件將數據備份到磁帶上。對于一般的備份 ,使用tar就足夠了。tar的參數有: 參數c是創建備份(Create) 參數v表示回顯模式(Verbose),將產生一系列所備份的文件列表 參數f指定使用的備份文件,它后面的參數為輸出的備份文件名 參數x是展開備份文件 參數t是顯示備份文件的內容 參數T后面跟隨一個文件參數,指定從這個文件中讀取要備份的各個文件的路徑 參數z是使用壓縮方式創建和解開備份文件,這是GNU的新版tar的功能,需要同時安裝gzip 如果不使用T參數,那么就需要一個參數,指明進行備份文件和目錄的路徑 這些選項參數可以使用Unix下的標准參數符號 “-” 進行引導,如 “-c” 、 “-f” 等,大部分 參數都是單獨使用的參數,而有些如 “-f” 、 “-T” ,其后面還要跟隨一個文件名作參數。因此可以將單獨的參 數寫在一起,如 “-cv” 就等同于 “-c -v” ,也可以與一個需要參數的選項寫在一起,如 “-cvf f ilenam” 就等同于 “-c -v -f filename” 。如果不使用 “-” 引導參數,tar也能識 別這些命令選項。如 “tar tvf filename” 就等同于 “tar -cvf filename” 。 tar能夠創建備份文檔,能夠備份到磁帶上或者產生一個文件,如: # tar cf root.tar /root 將/root目錄下的所有文檔備份到root.tar文件中,root.tar指定輸出的備份文件,/roo t指出要做備份的目錄。如果要備份到磁帶上,將輸出的備份文件指定為磁帶設備文件即可: # tar cf /dev/nrsa0 /root 如果設置了環境變量TAPE,則可以不使用參數f指定輸出磁帶設備名字。 # TAPE=/dev/nrsa0; export TAPE # tar c /root 從備份文檔中解出所有文件或某個文件,只需要使用x選項替換前面的c選項,例如從磁帶中解出hello.c文 件: tar xv hello.c 列出tar備份文檔中的內容,可以使用t選項,tar tv將列出磁帶上的所有文件內容,而tar tf r oot.tar將root.tar文件上的內容列出。 tar本身不支持文件壓縮,因此創建的文件要比較大。但tar可以和GNU的壓縮軟件gzip合作,直接生成 壓縮文件,所需要的是在參數中增加z選項。壓縮的備份文件和普通tar備份是不同的,因此凡是壓縮的備份操作,均需使 用z參數。如: # tar czvf root.tar.gz /root # tar xzvf root.tar.gz hello.c # tar tzvf root.tar.gz 要進行增量備份和更新備份,必須找出那些文件在這個期間進行更新。這個任務可以由程序find來完成,例如查 找過去七天更改的文件,并使用tar的-T參數制定進行備份的文件,進行備份: # find / -mtime -7 -print > /tmp/filelist # tar -c -T /tmp/filelist -f /dev/nrsa0 由于要使用find來找出需要備份的文件列表,那么就需要使用文件的修改時間進行查詢,需要使用-mtime 參數。另一個更有用的參數是-newer,可以查找出所有比某個文件更新的文件,由于備份是周期進行的,因此可以在完 全備份之后生成一個標記文件,那么所有比這個文件新的文件都需要進行更新備份。 # find / -newer full_back_tag_file -print > /tmp /filelist 進行備份需要定期執行,不能完全依賴于管理員手工進行備份。備份也應該選擇在系統比較空閑時進行,以免影響系 統的正常處理任務。通常可以選擇半夜0:00點之后進行備份,這樣更不能將這個任務由管理員手工完成了。Unix提供 了定時服務cron,能夠在確定的時間中執行一系列任務,因此備份必須和cron合作來完成,或者使用/etc下的d aily,weekly,monthly文件定時操作。 未完,待續。。。 |
|||
| 新浪首頁 > 科技時代 > FreeBSD使用大全連載 > FreeBSD連載(32):系統備份 | ||||
Copyright(C) 1999 SINA.com, Stone Rich Sight. All Rights Reserved
版權所有 四通利方 新浪網