Ubuntu系統(tǒng)的備份和恢復(fù)實現(xiàn)方式
Linux系統(tǒng)備份工具TimeShift
Timeshift 可以說是 Linux 系統(tǒng)最佳備份與恢復(fù)工具,開發(fā)者是 Tony George ,后由于 Tony George 不再繼續(xù)項目的開發(fā)工作,Linux Mint 團隊就聯(lián)系了該開發(fā)者,經(jīng)過商談最終 Linux Mint 團隊決定接管 Timeshift 的開發(fā)工作。
該工具與 Linux Mint 長期捆綁在一起,已成為 Linux Mint 的一個核心部分。用戶可以利用該工具在更新前輕松地進行備份以確保升級過程萬無一失。
官方github:https://github.com/linuxmint/timeshift
1. 安裝
# Ubuntu sudo apt update sudo apt install timeshift # centos sudo yum install timeshift
Ubuntu也可以在軟件中心直接搜索下載。
2. 啟動
sudo timeshift-launcher
Ubuntu也可以直接點擊TimeShift圖標啟動。

3. 使用
法一、圖形界面操作(方便)
點擊TimeShift圖標啟動TimeShift。
快照類型一般選擇“RSYNC”
RSYNC 是一種常見的文件同步協(xié)議,在 Timeshift 中用于增量式系統(tǒng)備份。備份時僅復(fù)制有改動的部分,因此通常比完整備份要小,創(chuàng)建速度更快。
Btrfs 是一種支持快照等高級特性的文件系統(tǒng)。Timeshift 利用 Btrfs 的快照功能,可以創(chuàng)建系統(tǒng)的只讀快照。這種類型的快照創(chuàng)建速度比 RSYNC 更快,占用的存儲空間更小。但前提是,你的系統(tǒng)必須使用 Btrfs 文件系統(tǒng)。
備份位置最好選擇在非系統(tǒng)硬盤或移動U盤,但要保證磁盤類型是ext4等linux類型。否則暫時選系統(tǒng)盤也行。選好盤后備份數(shù)據(jù)默認會保存在該硬盤下根目錄下的 /timeshift 目錄下。
備份時間有每月備份一次,每周備份一次、每日備份一次、每小時備份一次、每次開機備份一次,數(shù)字表示最多存幾個快照,多了的話會刪除最舊的那次快照。
“用戶主目錄”那欄,最好選全備份,即:“Include All Files”。
- 如下圖:

“篩選”那欄,可以通過添加目錄把 /snap/*** 目錄加上,否則會過濾掉了。如下圖:

其他會自動過濾掉即不備份的目錄(有個人備份需求可參考上面那步添加),如下圖:

法二、終端命令操作(高端)
# 備份 sudo timeshift --create --comments "快照名" --backup-device /dev/磁盤名 #### 注釋:磁盤名可以通過 `fdisk -l` 或 `df -TH` 來查看 #### ## @備份位置最好選擇在非系統(tǒng)硬盤或移動U盤,但要保證磁盤類型是ext4等linux類型。 ## ## @否則暫時選系統(tǒng)盤也行。選好盤后備份數(shù)據(jù)默認會保存在該硬盤下根目錄下的 `/timeshift` 目錄下。## # 查看。查看已存在的快照 sudo timeshift --list # 恢復(fù)。選擇上面已存在的其中一個快照進行恢復(fù),如:快照'2024-07-01_18-00-00'。 sudo timeshift --restore --snapshot '2024-07-01_18-00-00' --skip-grub
注:
開機按 `ctrl + alt + F1(一般F1-F6都可以)進入tty終端,可以輸入命令進行恢復(fù)。
如果命令終端都進不去,只能再做一個相同的系統(tǒng)的啟動U盤(類似于重裝系統(tǒng)),但不進入重裝系統(tǒng)選項,而進入試用系統(tǒng)(如:Try Ubuntu),然后在線安裝timeshift,再進行恢復(fù)(此時可以用命令也可以用圖形界面操作了)。
使用tar進行備份與恢復(fù)
從開始的CentOS到現(xiàn)在的Ubuntu(也稱烏班圖:“來自南部非洲班圖語“),傳遞著”我的存在是因為大家的存在”的價值觀。Linux的哲學(xué)思想深深吸引著我————“一切皆文件”。
身邊好多朋友也在用Ubuntu,都說好用,很炫酷,但也易崩潰。這個問題也讓我頭疼。我重裝系統(tǒng)不下三次了,每次最擔(dān)心的就是數(shù)據(jù)丟失。用的最久的一次是1年多,還挺自豪,算給面子了~.~
遇到問題,就要著手解決問題。畢竟重裝系統(tǒng)真的心塞。下面我要先說說我的想法,當然你也可以跳過這一部分,直接看下面的操作方法。
面臨這個問題,我的第一個想法就是,系統(tǒng)備份。類似與VMware下的快照一樣,可以給Ubuntu系統(tǒng)做個備份,儲存下來以備不時之需。有人會問,系統(tǒng)都崩潰了,備份文件怎么用?對于這個問題,關(guān)于存儲方面我想到的是云存儲技術(shù),畢竟現(xiàn)在云服務(wù)無處不在。實在不行將備份文件拷貝到U盤。關(guān)于如何運用備份文件恢復(fù)系統(tǒng)的方面我沒有什么建議,對這方面不太懂。難道是類似于數(shù)據(jù)庫的“事物回滾”!
下面就分享下我搜集到的方法吧,基本可以滿足要求。
系統(tǒng)備份
linux秉承一切皆文件的思想,系統(tǒng)備份就相當于把整個/(根目錄)所有文件打包壓縮保存。
步驟 1:用sudo提升權(quán)限(關(guān)鍵)
備份系統(tǒng)目錄(如/根目錄)需要管理員權(quán)限,必須在命令前加sudo,否則會因權(quán)限不足失敗。
步驟 2:確認/backup/tar目錄存在(避免 “目錄不存在” 錯誤)
如果/backup/tar目錄尚未創(chuàng)建,sudo也無法在不存在的目錄下創(chuàng)建文件,需先創(chuàng)建目錄:
# 創(chuàng)建目錄并賦予 root 權(quán)限(確保 sudo 能寫入) sudo mkdir -p /backup/tar # 查看目錄權(quán)限(確認 owner 是 root,且有寫入權(quán)限) ls -ld /backup/tar # 輸出應(yīng)類似:drwxr-xr-x 2 root root 4096 9月 9 10:00 /backup/tar
步驟 3:補充排除 “高風(fēng)險 / 無用目錄”
備份根目錄時,除了你已排除的目錄,建議額外排除以下目錄(避免備份無效數(shù)據(jù)或?qū)е聜浞菔。?/p>
--exclude=/backup:避免 “備份文件包含自身”(遞歸備份,導(dǎo)致文件體積無限增大)。--exclude=/sys:系統(tǒng)硬件信息目錄,動態(tài)生成,無需備份。--exclude=/var/run:臨時運行進程目錄,重啟后會重置,無需備份。
補充后的命令:
sudo tar -cvpzf /backup/tar/UbuntuBackup_`date +%Y%m%d`.tar.gz \ --exclude=/proc \ --exclude=/tmp \ --exclude=/lost+found \ --exclude=/media \ --exclude=/mnt \ --exclude=/run \ --exclude=/backup \ --exclude=/sys \ --exclude=/var/run \ /
步驟 4:驗證備份是否成功
命令執(zhí)行完成后(可能需要 10-60 分鐘,取決于系統(tǒng)數(shù)據(jù)量),通過以下命令確認備份文件存在且有效:
# 查看備份文件是否存在 ls -lh /backup/tar/UbuntuBackup_`date +%Y%m%d`.tar.gz # 輸出應(yīng)類似:-rw-r--r-- 1 root root 50G 9月 9 10:30 /backup/tar/UbuntuBackup_20250909.tar.gz # (可選)檢查備份文件完整性(避免壓縮損壞) tar -tzf /backup/tar/UbuntuBackup_`date +%Y%m%d`.tar.gz | head -10 # 若輸出前10個目錄/文件列表(如 /bin/bash、/etc/passwd),說明文件正常。
下面解釋一下上面這條命令。tar就是一個打包命令。
/backup/tar/UbuntuBackup_`date +%Y%m%d`.tar.gz
這個是備份文檔的存放路徑,備份文件在/backup/tar目錄下,UbuntuBackup_date +%Y%m%d.tar.gz是我備份文件的名字,這里用了一個shell命令date +%Y%m%d用于獲取當前時間,因為備份嘛,注明時間戳還是有必要的,然后.tar.gz是說明這個文件是用tar進行打包,gzip進行壓縮的。所以要根據(jù)你自己情況換為你自己的備份文件目錄和文件名。
參數(shù):
- -c: 新建一個備份文檔
- -v: 顯示詳細信息
- -p: 保存權(quán)限,并應(yīng)用到所有文件
- -z: 用gzip壓縮備份文檔,減小空間
- -f: 指定備份文件的路徑
- –exclude: 排除指定目錄,不進行備份
Note: 注意–exclude參數(shù),接下來談?wù)勀切┠夸洓]有備份,以及為什么不備份。
我的ubuntu系統(tǒng),共有四個分區(qū),分別是:/、/home、/boot、swap。
- 非常建議系統(tǒng)備份的時候按照分區(qū)進行分別備份,并且也不建議安裝系統(tǒng)的時候只給系統(tǒng)分一個分區(qū)。有四個分區(qū)的好處是,一般系統(tǒng)壞了都是/分區(qū)的問題,/home沒什么關(guān)系,所以這種情況,我可以只還原/分區(qū),其他分區(qū)完全可以不用動,系統(tǒng)就可以恢復(fù),會節(jié)省很多時間。
- 另外,為了保險起見,也可以對/home和/boot備份,但是備份頻率完全沒必要和/分區(qū)一樣高。比如/分區(qū)每周備份一次,那/home和/boot完全可以一個月備份一次,因為這兩個分區(qū)出問題的概率真的很小,而且變動也不會太頻繁。
請注意,如果沒有把/home或者/boot目錄單獨分一個區(qū),一定不要加–exclude=/home或–exclude=/boot參數(shù)?。?!
- /proc:一個虛擬文件系統(tǒng),系統(tǒng)運行的每一個進程都會自動在這個目錄下面創(chuàng)建一個進程目錄。既然是系統(tǒng)自動創(chuàng)建,也就沒必要備份的必要了。
- /tmp:一個臨時文件夾,系統(tǒng)的一些臨時文件會放在這里。
- /lost+found:系統(tǒng)發(fā)生錯誤時(比如非法關(guān)機),可以在這里找回一些丟失文件。
- /media:多媒體掛載點,像u盤、移動硬盤、windons分區(qū)等都會自動掛載到這個目錄下。
- /mnt:臨時掛載點,你可以自己掛載一些文件系統(tǒng)到這里。
- /run:系統(tǒng)從啟動以來產(chǎn)生的一些信息文件。
- /backup:備份文件存放文件夾,需要排除,避免重復(fù)備份。
- /home:用戶家目錄,存放用戶個人文件和應(yīng)用程序。
- /boot:和系統(tǒng)啟動相關(guān)的文件,像grub相關(guān)文件都放在這里,這個目錄很重要!
我再次強調(diào)一次,/home和/boot目錄我實際也是做了備份的,備份命令和上面差不多,當然你也可以排除一些目錄不進行備份,像我/home下面的虛擬機文件,太占空間了。
sduo tar -cvpzf /backup/tar/UbuntuBackup_home_`date +%Y%m%d`.tar.gz /home
sudo tar -cvpzf /backup/tar/UbuntuBackup_boot_`date +%Y%m%d`.tar.gz /boot
最后還要提一下就是,有可能備份到最后系統(tǒng)會提示"tar: 由于前次錯誤,將以上次的錯誤狀態(tài)退出",這個警告可以忽略,沒什么影響的。
系統(tǒng)還原
系統(tǒng)備份的意義就在于系統(tǒng)哪天發(fā)生意外時可以系統(tǒng)還原拯救回來
這里有兩種還原方式,如果你系統(tǒng)出問題了,但是還可以進入終端,那就可以直接解壓備份文件進行還原。但是如果你連系統(tǒng)都不能登錄了,就要使用LiveCD(U盤啟動盤)進行還原了。
- 直接操作
操作前切換到root,并且換到/根目錄。
tar -xvpzf /backup/tar/UbuntuBackup_20250907.tar.gz -C /
- LiveCD
操作之前請確保你已經(jīng)有一個制作好的ubuntu U盤啟動盤。進入系統(tǒng)后,打開終端還是先切換到root。
mkdir /mnt/sys mount /dev/sdaX /mnt/sys tar -xvpzf /media/myDisk/UbuntuBackup_boot_20250907.tar.gz -C /mnt/sys
注意先創(chuàng)建一個臨時目錄用于掛載你的/根目錄分區(qū),sdaX代表你的/根目錄分區(qū),如果不知道就用fdisk -l查看一下,另外如果你的移動硬盤沒有被自動掛載,你也需要手動創(chuàng)建一個臨時目錄進行掛載。
Note:因為 tar還原是只會覆蓋相同的文件,但是這種方法只是恢復(fù)備份時的文件,就是說如果某些文件丟失或損壞了,這樣可以恢復(fù)修復(fù)這些文件,但不能刪除自備份到恢復(fù)前這期間所生成的其它文件,說白了就是假如你備份系統(tǒng)時有1234這四個文件,如果三天后,由于某些原因變成了1234’5(4改變了),你恢復(fù)后,就會變成12345,其中4’恢復(fù)成備份時的文件,5保留。所以大家要是想徹底還原成備份時候的樣子最好徹底刪除根目錄下的所有文件,然后再還原,這樣就可以還原成備份時的樣子了。
刪除整個文件系統(tǒng),比如運行命令rm -fr /*,那么你還原系統(tǒng)后一定要把你之前沒有備份的目錄手動創(chuàng)建,不然重啟系統(tǒng)是有問題的。
mkdir proc tmp lost+found media mnt run
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
類Linux環(huán)境安裝jdk1.8及環(huán)境變量配置詳解
如何在linux系統(tǒng)中安裝jdk1.8?很多小伙伴都不知道在linux系統(tǒng)中怎么安裝jdk,下面,小編就為大家介紹下在linux系統(tǒng)中安裝jdk1.8方法。2019-09-09
解析Linux高性能網(wǎng)絡(luò)IO和Reactor模型
網(wǎng)絡(luò)I/O,可以理解為網(wǎng)絡(luò)上的數(shù)據(jù)流。通常我們會基于socket與遠端建立一條TCP或者UDP通道,然后進行讀寫。單個socket時,使用一個線程即可高效處理;然而如果是10K個socket連接,或者更多,我們?nèi)绾巫龅礁咝阅芴幚?/div> 2021-06-06
Centos8(最小化安裝)全新安裝Python3.8+pip的方法教程
這篇文章主要介紹了Centos8(最小化安裝)全新安裝Python3.8+pip的方法教程,本文給大家整理了一份命令,需要的朋友可以參考下2020-02-02
Linux修改主機名(hostname)的兩種方法(親測可用)
要想在虛擬機的 Linux 系統(tǒng)內(nèi)部改變主機名(hostname),需要通過系統(tǒng)的配置來修改,在大多數(shù)基于 Red Hat 的 Linux 發(fā)行版(比如 CentOS、Fedora)中,本文小編給大家介紹了;兩種修改主機名的方法,感興趣的小伙伴跟著小編一起來看看吧2023-11-11最新評論

