1. 程式人生 > >Linux系統備份還原工具2(TAR/壓縮工具)

Linux系統備份還原工具2(TAR/壓縮工具)

file 將在 ubunt 決定 mmu import zip2 comm 文件和目錄

相比DD備份還原工具,TAR壓縮還原工具更加小巧和靈活,但是不能備份MBR。當然可以通過重新安裝GRUB來解決MBR的這一問題。同時,TAR的做法也是官方推薦的。

註意:一個硬盤啟動時最新經過MBR(只有512KB),然後通過MBR指向操作系統的GRUB(也就是內核的引導程序)。

準備備份

為準備系統的完整備份,最好清空垃圾桶,並從當前安裝中刪除任何不需要的文件和程序。這包括可以填充不需要的許多文件的主文件夾。這樣做可以減少創建的存檔的大小,就是說釋放空間有多少。

下面列出了一個例子,可以自己決定適用的例子:

  • 刪除所有電子郵件。
  • 擦拭您保存的瀏覽器個人資料和搜索記錄。
    • 如果您不擔心安全問題,則此步驟不是必需的。

      許多用戶明確要求備份他們的電子郵件和瀏覽器設置。

  • 卸載任何外部驅動器,並刪除任何不希望包含在備份中的光盤或光盤等光盤。
    • 這將減少您在此過程中稍後輸入的排除數量。
  • 通過

    /home中的用戶文件夾的內容,刪除子目錄中的所有不需要的文件,通常人們下載文件並忘記它們。

備份

要開始,請打開一個終端,在Ubuntu這可以通過應用程序菜單->附件->終端完成一些目錄需要root或超級用戶的讀寫權限(需要備份),以了解為什麽看到FilePermissions要獲得臨時root權限,請簡單地介紹您要發布的任何命令,如RootSudo中所述

對於這個例子,我們將目錄更改為root。這就是備份的地方。

這是一個任意的決定,你應該在其他地方創建備份。例如,對於安裝的外部硬盤驅動器,可以使用內部連接的另一個分區或磁盤,甚至可以使用主目錄中的文件夾。在所有情況下,請確保將存檔歸檔的位置具有足夠的空間。只需使用cd命令在那裏導航。

cd / 

以下是如何存檔系統的示例性命令。

tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --one-file-system / 

要了解發生了什麽,我們將剖析命令的每一部分。

  • tar - 是創建存檔的命令。緊隨其後的每個字母修改,每個字母都在下面進行了說明。

    • c - 創建一個新的備份存檔。

    • v - 詳細模式,tar將打印它在屏幕上的工作。

    • p - 保留在檔案中放置的文件的權限,以便稍後恢復。

    • z - 用‘gzip‘壓縮備份文件使其更小。

    • f <filename> - 指定存儲備份的位置,backup.tar.gz是此示例中使用的文件名。它將存儲在當前工作目錄中,即使用cd命令時設置的目錄。

  • --exclude=/example/path - 此模型之後的選項指示tar什麽目錄備份。我們不想備份一切,因為一些目錄不是很有用的包括。第一個排除規則指示tar不會自動恢復,這對於避免操作過程中的錯誤很重要。

  • --one-file-system - 不要在不同的文件系統上包含文件。如果您希望其他文件系統(例如/home分區)或掛載在/media中的外部媒體備份,您需要單獨備份或省略此標誌。如果你省略了這個標誌,你將需要添加更多的-exclude=參數來避免你不想要的文件系統。這些將是root中的/proc/sys/mnt/media/run/dev目錄。/proc/sys是將虛擬文件系統提供給運行內核的變量,因此您不想嘗試備份或還原它們。 /dev是一個tmpfs,其內容由udev動態創建和刪除,因此您也不想備份或還原它。同樣,/run是一個tmpfs,它保存有關不需要備份的運行系統的變量。

  • 重要的是要註意,這些排除是遞歸的。這意味著位於被排除的所有文件夾中的所有文件夾也將被忽略。在該示例中,排除/media文件夾不包括所有已安裝的驅動器和介質。

    • 如果您希望在/media中備份某些分區,只需刪除排除,並寫入一個不包括您不想備份存儲在其中的分區的新分區。例如

      • tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --one-file-system / 
  • / - 所有選項都是要備份的目錄。因為我們要備份系統上的所有東西,我們使用/作為根目錄。像排除項一樣,這個遞歸地包括根目錄下不包括在排除項或其他選項中的每個文件夾。

一旦滿足該命令,執行它並等待它完成。操作的持續時間取決於文件的數量和壓縮選擇。一旦完成,請檢查您設置的目錄以查找存檔。在我們的示例中,backup.tar.gz將位於/目錄中,一旦完成。然後可以將此歸檔移動到任何其他目錄以進行長期存儲。

註意:在進程結束時,您可能會收到一條消息:“tar:錯誤退出延遲從以前的錯誤”或某事,但在大多數情況下,您可以忽略該消息。

備用備份

--one-file-system選項的“問題” 將是您必須包含/boot/home或其他分區。

以下是一個tar示例,其中包含有關排除的其他建議,以使生成的歸檔更小。在使用此示例之前,請查看並理解不包括的內容,並根據需要進行修改。

cd / # THIS CD IS IMPORTANT THE FOLLOWING LONG COMMAND IS RUN FROM /
tar -cvpzf backup.tar.gz \
--exclude=/backup.tar.gz \
--exclude=/proc \
--exclude=/tmp \
--exclude=/mnt \
--exclude=/dev \
--exclude=/sys \
--exclude=/run \ 
--exclude=/media \ 
--exclude=/var/log \
--exclude=/var/cache/apt/archives \
--exclude=/usr/src/linux-headers* \ 
--exclude=/home/*/.gvfs \
--exclude=/home/*/.cache \ 
--exclude=/home/*/.local/share/Trash /
  • /var/log不包括您可能需要或可能不想備份日誌的日誌。一般建議 - 在臺式機上跳過它們,但將其包含在服務器上。
  • /var/cache/apt/archives排除apt下載的任何.deb。這節省了大量的空間。
  • /usr/src/linux-headers*再次是一個空間保護。
  • /home/*/{.cache,.gvfs,.local/share/Trash}可能根本不需要備份這些文件。

附加提示

  • 為了保持良好的記錄,您應該在文件名中包含備份的日期和描述。
  • 另一個選擇是使用bzip2壓縮您的備份而不是gzip。Bzip2以犧牲速度提供更高的壓縮比。如果壓縮對您很重要,只需j替換命令中z,並將文件名更改為.tar.bz2本指南的其余部分使用gzip,在使用示例之前進行後續更改。

  • 如果要排除除當前以外的所有其他安裝程序 - 這意味著掛載到目錄的分區 - 然後使用排除規則附加--one-file-system選項。這具有停止焦油從任何其他任何目錄(包括/ mnt或/ media)到其他任何安裝位置的效果。例如,許多用戶為/home創建一個單獨的掛載,以將用戶文件夾與根分開,將此選項添加到我們的原始示例將完全排除家庭內容。

存檔拆分

如果要將存檔刻錄到光盤,或將其傳輸到文件系統的最大文件大小限制(例如FAT32,每個文件限制為4GB),那麽在歸檔創建過程中或之後,您將不得不拆分該文件。一個簡單的手段就是使用split命令。以下是兩種情況的示例。更多的信息不僅僅是傳達到這裏,可以在分頁的手冊頁中找到,使用在碼頭上拆分閱讀。確保您將這些檔案全部保存在您以後標簽提取的目錄中。一旦檔案被分割成合適的大小,它們可以一次被刻錄到光盤上。

在壓縮期間分割

tar -cvpz <put options here> / | split -d -b 3900m - /name/of/backup.tar.gz. 
  • 直到管道(|)的前半部分與我們前面的例子相同,除了省略f選項。沒有這個,tar會將歸檔輸出到標準輸出,然後將其傳送到split命令。
  • -d - 此選項意味著歸檔後綴將是數字而不是字母順序,每個分割將以01開始順序,並隨每個新的分割文件而增加。

  • -b - 此選項指定要拆分的大小,在此示例中,我已將其設置為3900mB以適應FAT32分區。

  • - - 連字符是輸入文件的占位符(通常是已創建的實際文件),並指示拆分以使用標準輸入。

  • /name/of/backup.tar.gz。是將應用於所有生成的分割文件的前綴。它應該直接到你想要的歸檔文件夾。在我們的示例中,第一個拆分歸檔將位於/name/of/中,並命名為backup.tar.gz.01。

壓縮完成後分割

split -d -b 3900m /path/to/backup.tar.gz /name/of/backup.tar.gz.  
  • 這裏不用使用標準輸入,而是簡單地拆分由/path/to/backup.tar.gz指定的現有文件。

重建存檔

重構完整的存檔是容易的,首先光盤裝入保持拆分檔案的目錄。然後只需使用cat將所有歸檔寫入一個,並將標準輸出發送到tar以提取到指定的目錄。

cat *tar.gz* | tar -xvpzf - -C /  
  • 在tar.gz之前和之後,使用*作為通配符,告訴貓從第一個匹配文件開始,並添加匹配的每一個,一個稱為catenation的進程,命令如何得到它的名字。
  • 之後,在本示例中,它將所有通過標準輸出傳遞給tar以將其提取到根目錄中。
  • 有關恢復的更完整的說明,請參閱恢復

通過網絡進行備份

命令tar本身不包括網絡支持,但是當與其他程序結合使用時,可以實現此功能。兩個常見的選項是netcat(nc)和ssh。

Netcat

命令nc被設計為通用網絡工具。它建立了兩臺聯網機器之間的簡單連接。這種連接存在,直到用戶手動斷開連接,不像像文件完成時終止的tcp那樣的常規連接。

接收電腦

在接收端,您將設置netcat來編寫備份文件,如下例所示。此命令將設置一個機器接收從網絡到端口1024的標準輸入,然後將其寫入文件backup.tar.gz。端口的選擇完全取決於用戶,只要是1024或更大。一個簡單的例子:

nc -l 1024 > backup.tar.gz 

發送電腦

在要備份的機器上,tar命令將被管道傳輸到nc,然後將其通過網絡發送備份到要寫入文件的相關端口。註意,在<接收主機>的位置,替換為網絡上的計算機的名稱。f選項被省略,因為我們不寫入本地文件,而是通過標準輸出移動歸檔。以下是一個例子:

tar -cvpz <all those other options like above> / | nc -q 0 <receiving host> 1024 

如果一切順利,備份將通過網絡進行管道傳輸,而不用接觸正在讀取的文件系統。

SSH

您也可以使用SSH。有關其正確使用的完整說明,請參閱SSH以下命令是可能的例子。

tar -cvpz <all those other options like above> / | ssh <backuphost> "( cat > ssh_backup.tar.gz )"

在示例中:

  • 命令的tar一半與上述相同,省略f選項,通過標準輸出將檔案管理到ssh並連接到聯網的計算機上。
  • ssh_backup.tar.gz將在指定的計算機上創建的文件的名稱。

  • <backuphost> - 應該在網絡上替換為有問題的計算機的名稱。

恢復

您將要從Live CD還原。如果需要,首先分區並格式化驅動器。你可以用gparted來做到這一點然後簡單地掛載你要恢復的分區。如果您在nautilus中打開驅動器,它將被自動安裝在/media下面看看找出哪裏:

ls /media 

恢復您的備份

sudo tar -xvpzf /path/to/backup.tar.gz -C /media/whatever --numeric-owner

簡要說明:

  • x - 告訴tar立即提取f選項指定的文件。在這種情況下,檔案是/home/test/backup.tar.gz

  • -C <directory> - 此選項告訴tar在提取之前更改為特定目錄。在這個例子中,我們正在恢復到根目錄(/)。

  • --numeric-owner - 此選項指示tar還原歸檔文件的數字所有者,而不是匹配您正在還原的環境中的任何用戶名。這是因為您要恢復的系統中的用戶標識不一定與您用於還原的系統(例如,Live CD)相匹配。

這將覆蓋指定的mount上的每個文件和目錄中的文件。歸檔後創建的任何文件將不存在歸檔中的等效項,因此將保持不變

允許恢復完成所需的時間。一旦提取完成,您可能需要重新創建未包含在原始存檔中的目錄,因為它們使用--exclude排除在外這不適用於使用--one-file-system排除的文件系統這可以通過以下命令完成:

mkdir /proc /sys /mnt /media 

一旦完成,重新啟動,一切都應該恢復到系統的狀態,當你進行備份。

恢復GRUB

要啟動系統,您需要恢復grub。為此,您將需要在chroot中進行重新配置:

sudo -s
for f in dev dev/pts proc ; do mount --bind /$f /media/whatever/$f ; done
chroot /media/whatever
dpkg-reconfigure grub-pc 

你會得到一個菜單,詢問你應該安裝什麽驅動器。選擇計算機將要啟動的任何驅動器。

有關修復grub的更多信息,請參閱GrubHowto

通過網絡恢復

這個簡短的指南,假設你使用nc進行如上所述的原始備份。

接收電腦

確保磁盤已安裝,並使用以下命令接受網絡上的輸入,然後將其提取到所指示的路徑。在這個例子中,目錄/mnt/disk將被提取到。

nc -l 1024 | sudo tar -xvpzf - -C /media/whatever 

發送電腦

在要發送歸檔的計算機上,使用以下命令:

cat backup.tar.gz | nc -q 0 <receiving host> 1024 

幾點評論:

  • 一個命令中-字符將告訴tar接受來自標準輸入而不是文件的輸入。在這種情況下,輸入來自管道。

  • 備份文件將被擴展,而不會保存在接收計算機的磁盤上,與備份時一樣。

參考:

https://help.ubuntu.com/community/BackupYourSystem/TAR(官方TAR備份還原教程)

http://blog.csdn.net/zeg635702733/article/details/53992224(TAR還原到一個大小不一致的硬盤)

http://www.linuxfly.org/post/493/(遷移Linux)

http://www.jiazhoulvke.com/2014/10/27/linux/(硬盤遷移)

http://www.linuxidc.com/Linux/2015-04/116451.htm(更換主板)

Linux系統備份還原工具2(TAR/壓縮工具)