linux 系統備份之完美方案 from 百度貼吧

2021-06-06 11:35:55 字數 3232 閱讀 1717

1. 介紹

2. 備份

1. 通過網路備份

3. 恢復

1. grub 恢復

4. 其他辦法

介紹你們大多數在開始使用linux之前多半使用windows。在那時候,你也許需要備份和恢復系統。對於windows而言,你需要某種私有軟體。使用這種私有軟體,你得重啟你的機器,引導到乙個特殊的環境,在這一環境下,你可以備份和恢復(這種私有軟體是像norton ghost之類的程式)。在那時候,你也許會尋思為什麼不可能僅僅把整個c盤壓縮成乙個大zip檔案。在windows下這是不可能的,因為有大量的檔案在它們使用的時候是無法複製、重寫的,所以你需要專門的軟體來處理備份。

那麼,我在這裡要告訴你,那些東西,正如重啟一樣,都是windows荒唐事件(tm)。完全沒有必要使用ghost之類的程式來建立你的linux系統(或者任何linux系統,就這點而論)的備份。事實上,使用ghost也許會是乙個糟透了的主意,如果你使用的不是ext2。linux的預設分割槽 ext3,在ghost看來是乙個毀壞了的ext2分割槽,然後,ghost會很好地糟蹋你的資料。

備份「那我該用什麼來備份我的系統呢?」也許你會問。小事一樁,就像你備份或壓縮乙個別的檔案一樣,tar。不像windows,linux不限制根使用者訪問任何東西,因此,你完全可以把乙個分割槽上每乙個的檔案放入乙個tar檔案中。

來實施這一方法,用這個成為根使用者:

sudo su

接著去你的檔案系統的根目錄(在我們的例子中,我們使用它,不過你可以去你希望備份的任何地方,包括遠端或可移動驅動器。)

cd /

然後,下面就是我用來備份我的系統的完整的命令:

tar cvpzf backup.tgz / --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys

--exclude=/media

接著,讓我們稍微解釋一下:

*很明顯,'tar'部分就是我們將要使用的軟體。

*'cvpfz'是我們給tar加的選項,像「建立乙個壓縮文件」(這是顯然的),「儲存許可權」(以便使每乙個相同的檔案有相同的許可權),以及「gzip」(縮減大小)。

*接下來,是壓縮文件將獲得的名稱,在我們的例子中是backup.tgz。

*緊隨其後的是我們想要備份的根目錄。既然我們想備份所有東西:/

*接著就是我們要剔除的目錄了。我們不想備份每一樣東西,因為包括有些目錄不是非常有用。同時確保你沒有把備份檔案本身也加進去了,否則,你會得到怪異的結果的。你也許同樣不打算把/mnt資料夾包括進來——如果你在那兒掛載了其他分割槽——否則最終你會把那些也備份的。同時確保你沒有任何東西掛載在 /media(即沒有掛載任何cd或可移動介質)。否則,剔除/media。

如果你想排除所有的其他分割槽,你可以使用 'l' 引數代替 --exclude, 上面的命令看起來象這樣:

tar cvpzlf backup.tgz / --exclude=/lost+found --exclude=/backup.tgz

按:kvidell在論壇主題裡建議也剔除/dev目錄。不過,我有其他證據表明這樣做是不明智的。

好了,如果命令適合你的話,敲擊確定鍵(或者回車鍵,管它叫什麼名字),然後什麼都不用幹,放鬆一下。備份也許會花上一段時間。

完了以後,在你的檔案系統的根目錄會有乙個叫作backup.tgz的檔案——很可能相當巨大。現在你可以把燒錄到***上,或者移動到另一台機器,你可以做任何你想做的事情。

按2:在程序的最後,你也許會得到一條資訊,寫著「tar:由於先前錯誤的耽擱而存在錯誤」或者其他什麼,不過大多數情況下你可以僅僅忽略它。

作為選擇,你可以使用bzip來壓縮你的備份。這意味著較高的壓縮比但是也意味著較低的速度。如果壓縮比對你很重要,只需用「j」替換命令中的「z」,

同時給備份命乙個相應的副檔名。這些會使命令變成這樣:

tar cvpjf backup.tar.bz2 / --exclude=/proc --exclude=/lost+found --exclude=/backup.tar.bz2 --exclude=/mnt --exclude=/sys

通過網路備份

如果空白的檔案系統太少了並且你又不能掛載其它的檔案系統來儲存備份檔案,你有可能使用 netcat 來完成備份.

在接受端你必須設定 netcat 用於寫備份檔案,象這樣:

nc -l -p 1024 > backup.tar.bz2

然後你傳送 tar 命令,不帶 'f' 引數通過 netcat 在傳送端,象這樣:

tar cvpj / | nc -q 0 1024

在上面的命令中 1024 僅僅是乙個隨機的埠號, 任何從 1024 或以上的都可以工作.

如果安全的通過網路備份不依賴檔案系統完成備份. 事實上乙個真正快的網路比寫備份檔案到磁碟要快.

在上面的講述中 (由於我剛剛發呆,因此我不能證實它是可靠的) 是這個命令:

tar cvpj / | ssh "cat > backup.tar.bz2"

恢復警告:看在上帝的份上,在這一部分請小心謹慎。如果你不理解你在這裡幹了什麼,你可能最終毀壞了對你而言很重要的東西,所以請小心謹慎。

那麼,我們將緊接著上一章的例子:在分割槽的根目錄下的backup.tgz檔案

再一次確保你是根使用者以及備份檔案在檔案系統的根目錄。

linux美妙的地方之一就是這一項工作甚至可以在乙個正在執行的系統上進行;沒必要被引導cd或者任何東西搞得暈頭轉向。當然,如果你使你的系統無法被引導了。你也許別無選擇,只能使用一張live-cd了,但是結果是一樣的。你甚至可以在linux系統正在執行的時候,移除它裡面所有檔案。可是我不告訴你那個命令!

好了,言歸正傳。這是我要用的命令:

tar xvpfz backup.tgz -c /

如果你使用 bz2

tar xvpfj backup.tar.bz2 -c /

警告:這會把你分割槽裡所有檔案替換成壓縮文件裡的檔案!

只要敲一下確定,然後去看***。同樣,這會花一段時間。等它完成了,你就有了乙個完全恢復的linux系統!只需確保在你做其他任何事情之前,重新建立你剔除的目錄:

mkdir /proc 

mkdir /lost+found 

mkdir /mnt 

mkdir /media

mkdir /sys etc...

當你重啟以後,所以的事情都會和你備份的時候一模一樣。

恢復 grub

那麼,如果你想把你的系統移動到一塊新硬碟上,或者,你想對你的grub做一些糟糕的事情(比方說,安裝windows),你也將需要重灌grub。

linux系統備份

剛剛重新安裝系統,這次決定備份一些重要的目錄。以前一直知道tar命令是這方面的高手,但是到底要怎麼備份?並沒有系統的研究過,所以剛才的實踐,總結了經驗,放出來和大家分享。第一部分 備份 首先 我們需要在 目錄下重建乙個壓縮檔案,為什麼要在 下面建立呢?就是因為不能讓我們把這個壓縮檔案自己壓縮的自己的...

備份linux系統

1.我該用什麼來備份我的系統呢?也許你會問。小事一樁,就像你備份或壓縮乙個別的檔案一樣,tar。不像windows linux 不限制根使用者訪問任何東西,因此,你完全可以把乙個分割槽上每乙個的檔案放入乙個tar檔案中。來實施這一方法,用這個成為根使用者 sudo su 接著去你的檔案系統的根目錄 ...

備份linux系統

備份linux系統 sudo su cd tar cvpzf backup.tgz exclude proc exclude lost found exclude backup.tgz exclude mnt exclude sys 如果你想排除所有的其他分割槽,你可以使用 l 引數代替 exclu...