Ubuntu如何備份和恢復(fù)系統(tǒng)
http://wsfei.iteye.com/blog/1100534
在 使用Ubuntu之前,相信很多人都有過使用Windows系統(tǒng)的經(jīng)歷。如果你備份過Windows系統(tǒng),那么你一定記憶猶新:首先需要找到一個備份工 具(通常都是私有軟件),然后重啟電腦進(jìn)入備份工具提供的軟件環(huán)境,在這里備份或者恢復(fù)Windows系統(tǒng)。Norton Ghost是備份Windows系統(tǒng)時經(jīng)常使用的備份工具。
在備份Windows系統(tǒng)的時候你可能想過,我能不能把整個C盤都放到一個ZIP文件里去呢。這在Windows下是不可能的,因?yàn)樵赪indows中有很多文件在它們運(yùn)行時是不允許拷貝或覆蓋的,因此你需要專門的備份工具對Windows系統(tǒng)進(jìn)行特殊處理。
和 備份Windows系統(tǒng)不同,如果你要備份Ubuntu系統(tǒng)(或者其它任何Linux系統(tǒng)),你不再需要像Ghost這類備份工具。事實(shí)上,Ghost 這類備份工具對于Linux文件系統(tǒng)的支持很糟糕,例如一些Ghost版本只能完善地支持Ext2文件系統(tǒng),如果你用它來備份Ext3文件系統(tǒng),你可能會 丟失一些寶貴的數(shù)據(jù)。
1. 備份系統(tǒng)
我該如何備份我的Ubuntu系統(tǒng)呢?很簡單,就像你備份或壓縮其它東西一樣,使用TAR。和Windows不同,Linux不會限制root訪問任何東西,你可以把分區(qū)上的所有東西都扔到一個TAR文件里去!
首先成為root用戶:
$ sudo su
然后進(jìn)入文件系統(tǒng)的根目錄(當(dāng)然,如果你不想備份整個文件系統(tǒng),你也可以進(jìn)入你想要備份的目錄,包括遠(yuǎn)程目錄或者移動硬盤上的目錄):
# cd /
下面是我用來備份系統(tǒng)的完整命令:
# tar cvpzf backup.tgz –exclude=/proc –exclude=/lost+found –exclude=/backup.tgz –exclude=/mnt –exclude=/sys /
讓我們來簡單看一下這個命令:
“tar”當(dāng)然就是我們備份系統(tǒng)所使用的程序了。
“cvpfz”是tar的選項(xiàng),意思是“創(chuàng)建檔案文件”、“保持權(quán)限”(保留所有東西原來的權(quán)限)、“使用gzip來減小文件尺寸”。
“backup.gz”是我們將要得到的檔案文件的文件名。
“/”是我們要備份的目錄,在這里是整個文件系統(tǒng)。
在 檔案文件名“backup.gz”和要備份的目錄名“/”之間給出了備份時必須排除在外的目錄。有些目錄是無用的,例如“/proc”、“/lost+ found”、“/sys”。當(dāng)然,“backup.gz”這個檔案文件本身必須排除在外,否則你可能會得到一些超出常理的結(jié)果。如果不把“/mnt”排 除在外,那么掛載在“/mnt”上的其它分區(qū)也會被備份。另外需要確認(rèn)一下“/media”上沒有掛載任何東西(例如光盤、移動硬盤),如果有掛載東西, 必須把“/media”也排除在外。
有人可能會建議你把“/dev”目錄排除在外,但是我認(rèn)為這樣做很不妥,具體原因這里就不討論了。
執(zhí)行備份命令之前請?jiān)俅_認(rèn)一下你所鍵入的命令是不是你想要的。執(zhí)行備份命令可能需要一段不短的時間。
備份完成后,在文件系統(tǒng)的根目錄將生成一個名為“backup.tgz”的文件,它的尺寸有可能非常大。現(xiàn)在你可以把它燒錄到DVD上或者放到你認(rèn)為安全的地方去。
在備份命令結(jié)束時你可能會看到這樣一個提示:’tar: Error exit delayed from previous errors’,多數(shù)情況下你可以忽略它。
你還可以用Bzip2來壓縮文件,Bzip2比gzip的壓縮率高,但是速度慢一些。如果壓縮率對你來說很重要,那么你應(yīng)該使用Bzip2,用“j”代替命令中的“z”,并且給檔案文件一個正確的擴(kuò)展名“bz2”。完整的命令如下:
# tar cvpjf backup.tar.bz2 –exclude=/proc –exclude=/lost+found –exclude=/backup.tar.bz2 –exclude=/mnt –exclude=/sys /
2. 恢復(fù)系統(tǒng)
在進(jìn)行恢復(fù)系統(tǒng)的操作時一定要小心!如果你不清楚自己在做什么,那么你有可能把重要的數(shù)據(jù)弄丟,請務(wù)必小心!
接著上面的例子。切換到root用戶,并把文件“backup.tgz”拷貝到分區(qū)的根目錄下。
在 Linux中有一件很美妙的事情,就是你可以在一個運(yùn)行的系統(tǒng)中恢復(fù)系統(tǒng),而不需要用boot-cd來專門引導(dǎo)。當(dāng)然,如果你的系統(tǒng)已經(jīng)掛掉不能啟動了, 你可以用Live CD來啟動,效果是一樣的。你還可以用一個命令把Linux系統(tǒng)中的所有文件干掉,當(dāng)然在這里我不打算給出這個命令!
使用下面的命令來恢復(fù)系統(tǒng):
# tar xvpfz backup.tgz -C /
如果你的檔案文件是使用Bzip2壓縮的,應(yīng)該用:
# tar xvpfj backup.tar.bz2 -C /
注意:上面的命令會用檔案文件中的文件覆蓋分區(qū)上的所有文件。
執(zhí)行恢復(fù)命令之前請?jiān)俅_認(rèn)一下你所鍵入的命令是不是你想要的,執(zhí)行恢復(fù)命令可能需要一段不短的時間。
恢復(fù)命令結(jié)束時,你的工作還沒完成,別忘了重新創(chuàng)建那些在備份時被排除在外的目錄:
# mkdir proc
# mkdir lost+found
# mkdir mnt
# mkdir sys
等等
當(dāng)你重啟電腦,你會發(fā)現(xiàn)一切東西恢復(fù)到你創(chuàng)建備份時的樣子了!
Linux備份策略研究
世界上沒有絕對安全的系統(tǒng)。如果想獲得絕對安全的系統(tǒng),只有不連接網(wǎng)絡(luò),不讓管理員之外的人使用,刷卡管制人員進(jìn)出,使用監(jiān)視器監(jiān)視錄像,甚至于不 要開機(jī)。但是這是完全不切實(shí)際的,我們僅能寄望盡量讓系統(tǒng)能在承擔(dān)低風(fēng)險的情況下工作,因?yàn)槿魏尾僮飨到y(tǒng)都不可能毫無漏洞。那么怎樣才能讓系統(tǒng)承擔(dān)最低的 風(fēng)險呢?回答因該是在保障系統(tǒng)盡量安全的基礎(chǔ)上,做好各個系統(tǒng)上的數(shù)據(jù)備份工作。一旦系統(tǒng)遭受到毀滅性的打擊,可將平時做好的備份數(shù)據(jù)及時恢復(fù),這樣才能 使被破壞的系統(tǒng)迅速恢復(fù)正常,以避免不必要的損失。
下面針對Linux操作系統(tǒng)上的數(shù)據(jù)備份方法發(fā)表一下自己的看法。
數(shù)據(jù)備份種類
總的來說,在Linux操作系統(tǒng)中將備份分為兩類:系統(tǒng)備份,實(shí)現(xiàn)對操作系統(tǒng)和應(yīng)用程序的備份;用戶備份,實(shí)現(xiàn)對用戶文件的備份。在下面我們會看到,系統(tǒng)備份和用戶備份是不同的。
系統(tǒng)備份
系統(tǒng)備份就是對操作系統(tǒng)和應(yīng)用程序的備份,進(jìn)行系統(tǒng)備份的原因是盡量在系統(tǒng)崩潰以后能快速簡單完全地恢復(fù)系統(tǒng)的運(yùn)行。進(jìn)行備份的最有效方法是僅僅備份那些對于系統(tǒng)崩潰后恢復(fù)所必需的數(shù)據(jù)。
Linux系統(tǒng)中很多重要的文件位于/etc目錄之下,如:
/etc/group : 組用戶信息;
/etc/passwd : 包含所有的用戶信息,如密碼,登錄shell等;
/etc/fstab : 配置系統(tǒng)有哪些文件系統(tǒng);
/etc/inittab : 配置init在不同運(yùn)行級別下分別如何啟動系統(tǒng);
/etc/hosts : 域名解析的配置信息;
/etc/inetd.conf : 進(jìn)程控制信息;
/etc/printcap:配置如何與打印機(jī)通信;
/etc/XF86Config:包含XFree86的初始配置;
上面這些重要的配置文件都需要定期的做備份。
不 同的系統(tǒng)可能有很多重要配置文件,可以看到/etc目錄下的配置文件非常重要。當(dāng)然,某些程序使用了其他目錄下的一些文件,但是Linux的基本配置文件 絕大多數(shù)都位于/etc目錄下。很多人曾經(jīng)花費(fèi)了好長時間才正確的配置了XF86Config文件,想到如果重新再做一遍,就很費(fèi)時費(fèi)力。再舉個例子, /etc目錄下的passwd文件,如果誤操作,將此文件更改,或刪除了,則整個系統(tǒng)用戶無法正常登錄,如果定期或及時的對其備份,遇到上面的情況后,就 可以非常快速的恢復(fù)。
如果修改了某個程序所使用的配置文件,一般不能將其搬移到其它的地方,因?yàn)槌绦蛲ǔT诠潭ǖ牡胤綄ふ遗渲梦募R虼擞涗泴ο到y(tǒng)所做的修改也非常重要,無論所做的修改如何小,當(dāng)系統(tǒng)崩潰時才能輕松的恢復(fù)系統(tǒng)。
用戶備份
用戶備份不同于系統(tǒng)備份,因?yàn)橛脩舻臄?shù)據(jù)變動更加頻繁一些。當(dāng)備份用戶數(shù)據(jù)時,只是為用戶提供一個虛擬的安全網(wǎng)絡(luò)空間,合理的放置最近用戶數(shù)據(jù)文件的備份,當(dāng)出現(xiàn)任何問題,例如,誤刪除某些文件或者硬盤發(fā)生故障時,用戶可以恢復(fù)自己的數(shù)據(jù)。
用戶備份應(yīng)該比系統(tǒng)備份更加頻繁,也許每天都需要進(jìn)行備份,或使用cron程序自動定期運(yùn)行某個程序的方法來備份數(shù)據(jù)。
數(shù)據(jù)備份策略
不 管系統(tǒng)多么可靠,總會發(fā)生一些意想不到的事情,致使系統(tǒng)數(shù)據(jù)丟失。因此使用備份來保護(hù)數(shù)據(jù)不丟失是一種非常重要的手段,尤其在系統(tǒng)數(shù)據(jù)非常重要的時候。經(jīng) 常進(jìn)行數(shù)據(jù)備份能夠減少偶然破壞造成的損失,保證系統(tǒng)能夠從錯誤中恢復(fù)正常運(yùn)行。備份不應(yīng)該成為一個長時間痛苦的事情,但它是作為系統(tǒng)管理必不可少的工 作,在著手之前進(jìn)行詳細(xì)的考慮和計劃是應(yīng)該的。
在進(jìn)行備份之前,首先要選擇合適的備份策略,這將決定何時需要備份,以及出現(xiàn)故障時進(jìn)行恢復(fù)的方式。通常使用的備份方式有三種:
完全備份: 每隔一定時間就對系統(tǒng)進(jìn)行一次全面的備份,這樣在備份間隔期間出現(xiàn)數(shù)據(jù)丟失等問題,可以使用上一次的備份數(shù)據(jù)恢復(fù)到前次備份時數(shù)據(jù)狀況。這是最基本的備份 方式,但是每次都需要備份所有的數(shù)據(jù),并且每次備份的工作量也很大,需要大量的備份介質(zhì),因此這種備份不能進(jìn)行的太頻繁,只能每隔一段較長時間才進(jìn)行一次 完整的備份。但是這樣一旦發(fā)生數(shù)據(jù)丟失,只能恢復(fù)到上次備份的數(shù)據(jù),這期間內(nèi)更新的數(shù)據(jù)就有可能丟失。
增量備份: 首先進(jìn)行一次完全備份,然后每隔一個較短時間進(jìn)行一次備份,但僅僅備份在這個期間更改的內(nèi)容。當(dāng)經(jīng)過一個較長的時間后再重新進(jìn)行一次完全備份,開始前面的 循環(huán)過程。由于只有每個備份周期進(jìn)行一次完全備份,其他只進(jìn)行更新數(shù)據(jù)的備份,因此工作量小,可以進(jìn)行頻繁的備份。例如以一個月為一個周期,一個月進(jìn)行一 次完全備份,每天晚上0點(diǎn)進(jìn)行這一天改變的數(shù)據(jù)備份。這樣一旦發(fā)生數(shù)據(jù)丟失,首先恢復(fù)到前一個完全備份,然后按日期一個一個恢復(fù)每天的備份,就能恢復(fù)到前 一天的情況。這種備份方法比較經(jīng)濟(jì)。
累計備份:這種備份方法與增量備份相似,首先每月進(jìn)行一次完全備 份,然后每天進(jìn)行一次更新數(shù)據(jù)的備份。但不同在于,增量備份是備份該天更改的數(shù)據(jù),而累計備份是備份從上次進(jìn)行完全備份后更改的全部數(shù)據(jù)文件。一旦發(fā)生數(shù) 據(jù)丟失,可以使用前一個完全備份恢復(fù)到前一個月的狀態(tài),再使用前一個累計備份恢復(fù)到前一天的情況。這樣做的缺點(diǎn)是每次做累計備份工作的任務(wù)比增量備份的工 作量要大,但好處在于,增量備份每天都備份,因此要保存數(shù)據(jù)備份數(shù)量太多,而累計備份則不然,只需保存一個完全備份和一個累計備份就可以恢復(fù)故障以前的狀 態(tài)。另外在進(jìn)行恢復(fù)工作時,增量備份要順序進(jìn)行多次備份的恢復(fù),而累計備份只需兩次恢復(fù),因此它的恢復(fù)工作相對簡單。
增量備份和累計備份 都能以比較經(jīng)濟(jì)的方式對系統(tǒng)進(jìn)行備份,在這些不同的策略之間進(jìn)行選擇不但與系統(tǒng)數(shù)據(jù)更新的方式相關(guān),也依賴于管理員的習(xí)慣。通常在系統(tǒng)數(shù)據(jù)更新不是太頻繁 的話,可以選用更新備份的方式。但是如果系統(tǒng)數(shù)據(jù)更新太快,使每個備份周期后的幾次累計備份的數(shù)據(jù)量相當(dāng)大。這時候可以考慮增量備份或混用累計備份和增量 備份的方式,或者縮短備份周期。
數(shù)據(jù)備份命令
在Linux系統(tǒng)中常用的備份命令通常有下面幾種:
1.使用tar命令
Linux的實(shí)用程序tar最初是為了制作磁帶存檔而設(shè)計的(把文件和目錄復(fù)制到磁帶中,然后從存檔中提取或恢復(fù)文件),而現(xiàn)在的應(yīng)用中可以把它用于任何設(shè)備,它是數(shù)據(jù)備份中最常用的命令之一。
下面具體介紹tar命令的使用方法:
(1)格式:tar 參數(shù) ......
(2)參數(shù):
c: 創(chuàng)建備份(Create)
v: 表示回顯模式(Verbose),將產(chǎn)生一系列備份的文件列表
f: 指定使用的備份文件,它后面的參數(shù)為輸出的備份文件名
x: 展開備份文件
t: 顯示備份文件的內(nèi)容
T: 后面跟隨一個文件參數(shù),指定從這個文件中讀取要備份的各個文件的路徑。如果不使用T參數(shù),那么就需要一個參數(shù),指明進(jìn)行備份文件和目錄的路徑
Z: 使用壓縮方式創(chuàng)建和解開備份文件,這是GNU的新版tar的功能,需要同時安裝gzip。
例如:
$ tar cvf backup.tar /etc
上 面的命令將/etc下的所有文件打包成tar存檔文件backup.tar。tar的第一個參數(shù)“cvf”,是tar的命令參數(shù),“c”告訴tar創(chuàng)建一 個存檔文件;“v”選項(xiàng)迫使tar采用冗長模式,即在存檔時打印每個文件名;“f”選項(xiàng)告訴tar下一個參數(shù)backup.tar是創(chuàng)建的存檔文件名。
下面一行的命令將tar文件backup.tar解開并放到當(dāng)前工作目錄下。必須說明的是這樣做是有危險的,因?yàn)樵趶膖ar文件中解開文件時,舊文件將被覆蓋。
$ tar xvf backup.tar
在解開tar文件之前,知道在何處打開文件是非常重要的。例如,假設(shè)存檔以下文件:/etc/hosts,/etc/group和/etc/passwd。如果用下述命令:
$ tar cvf backup.tar /etc/hosts /etc/group /etc/passwd
目錄/etc會被加到每個文件名前。為了將文件展開到正確位置,需要用下述命令:
$ cd /
$ tar xvf backup.tar
這是因?yàn)槲募拇鏅n文件中抽取出路徑名,如果用下述命令存檔文件:
$ cd /etc
$ tar cvf hosts group passwd
這樣目錄名就不存在存檔文件中,因此需要在展開文件之前用“cd /etc”命令進(jìn)入目錄etc。由此可見,tar文件的創(chuàng)建方式與在何處展開有很大關(guān)系。
命令:
$ tar tvf backup.tar
在解開tar文件之前顯示tar文件的索引,用這種方式可以看到存檔文件中與文件名有關(guān)的目錄名,從而在正確位置上展開存檔文件。
2.gzip和compress 命令
與MS-DOS的存檔程序不同, tar在存檔過程中并不壓縮文件。因此,如果存儲兩個1MB的文件,那么tar文件大小為2MB,gzip命令用來壓縮文件(被壓縮的文件并不需要是tar格式)。
例如:
$ gzip -9 backup.tar
壓縮backup.tar文件,產(chǎn)生的文件為backup.tar.gz,開關(guān)“-9”告訴gzip用最高的壓縮比。gunzip命令用來解開一個gzip壓縮的文件,用“gzip -d”也可以達(dá)到同樣效果。
例如:
$ gunzip backup.tar.gz
$ gzip -d backup.tar.gz
3. 聯(lián)合使用
介紹了這些命令之后,我們來嘗試組合使用這些命令。為了壓縮存儲一組文件,可以用下述命令:
$ tar cvf backup.tar /etc
$ gzip -9 backup.tar
結(jié)果是形成文件backup.tar.gz。展開該文件時,用相反的命令:
$ gunzip backup.tar.gz
$ tar xvf backup.tar
tar命令還包括“z”選擇項(xiàng),它會自動采用gzip壓縮算法來聯(lián)機(jī)壓縮/解壓文件。例如,下列命令:
$ tar cvfz backup.tar.gz /etc
上面一行的命令等價于:
$ tar cvf backup.tar /etc
$ gzip backup.tar
而命令:
$ tar xvfz backup.tar.Z
可以用來代替下述命令:
$ uncompress backup.tar.Z
$ tar xvf backup.tar
案例實(shí)驗(yàn)
案例:使用tar進(jìn)行備份。
選定了備份方式之后,可以使用tar、cpio、dump等備份工具軟件將數(shù)據(jù)備份到磁帶上。對于一般的備份,使用tar就足夠了。tar能夠創(chuàng)建備份文檔,能夠備份到磁帶上或者產(chǎn)生一個文件,如:
$ tar cvf root.tar /root
將/root目錄下的所有文檔備份到root.tar文件中,root.tar為指定輸出的備份文件,/roo t指出要做備份的目錄。如果要備份到磁帶上,將輸出的備份文件指定為磁帶設(shè)備文件即可:
$ tar cvf /dev/rmt/0h /root
如果設(shè)置了環(huán)境變量TAPE,則可以不使用選項(xiàng)“f”指定輸出磁帶設(shè)備名字:
$ TAPE=/dev/rmt/0h; export TAPE
$ tar cv /root
要進(jìn)行增量備份,必須找出哪些文件在這個期間進(jìn)行更新。這個任務(wù)可以由命令find來完成,例如查找過去七天更改的文件,并使用tar的“-T”參數(shù)制定進(jìn)行備份的文件,命令如下:
$ find / -mtime -7 -print > /tmp/filelist
$ tar -c -T /tmp/filelist -f /dev/rmt/0h
由 于要使用find來找出需要備份的文件列表,那么就需要利用文件的修改時間進(jìn)行查詢,需要使用“-mtime” 參數(shù)。另一個更有用的參數(shù)是“-newer”,可以查找出所有比某個文件更新的文件,由于備份是周期進(jìn)行的,因此可以在完全備份之后生成一個標(biāo)記文件,那 么所有比這個文件新的文件都需要進(jìn)行更新備份。
$ find / -newer full_back_tag_file -print > /tmp /filelist
進(jìn) 行數(shù)據(jù)備份需要定期執(zhí)行,不能完全依賴于管理員手工進(jìn)行備份。備份也應(yīng)該選擇在系統(tǒng)比較空閑時進(jìn)行,以免影響系統(tǒng)的正常處理任務(wù)。通常可以選擇半夜 0:00點(diǎn)之后進(jìn)行備份,這樣更不能將這個任務(wù)由管理員手工完成了。但Linux提供了定時服務(wù)cron程序,能夠在確定的時間中執(zhí)行一系列任務(wù),因此數(shù) 據(jù)備份必須和cron合作來完成,或者使用/etc下的daily,weekly,monthly文件做定時備份的操作。
posted on 2011-08-25 12:56
MEYE 閱讀(11660)
評論(2) 編輯 收藏