Ubuntu系统的备份和恢复实现方式

 更新时间:2025年12月29日 14:32:33   作者:人工智能训练师  
Timeshift是Linux系统备份与恢复工具,支持增量式备份和Btrfs快照,备份位置可选择非系统硬盘或移动U盘,用户可以通过图形界面或终端命令进行操作,包括全备份和选择性备份,恢复系统时,可以使用LiveCD进行操作

Linux系统备份工具TimeShift

Timeshift 可以说是 Linux 系统最佳备份与恢复工具,开发者是 Tony George ,后由于 Tony George 不再继续项目的开发工作,Linux Mint 团队就联系了该开发者,经过商谈最终 Linux Mint 团队决定接管 Timeshift 的开发工作。

该工具与 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 是一种常见的文件同步协议,在 Timeshift 中用于增量式系统备份。备份时仅复制有改动的部分,因此通常比完整备份要小,创建速度更快。

Btrfs 是一种支持快照等高级特性的文件系统。Timeshift 利用 Btrfs 的快照功能,可以创建系统的只读快照。这种类型的快照创建速度比 RSYNC 更快,占用的存储空间更小。但前提是,你的系统必须使用 Btrfs 文件系统。

备份位置最好选择在非系统硬盘或移动U盘,但要保证磁盘类型是ext4等linux类型。否则暂时选系统盘也行。选好盘后备份数据默认会保存在该硬盘下根目录下的 /timeshift 目录下。

备份时间有每月备份一次,每周备份一次、每日备份一次、每小时备份一次、每次开机备份一次,数字表示最多存几个快照,多了的话会删除最旧的那次快照。

“用户主目录”那栏,最好选全备份,即:“Include All Files”。

  • 如下图:

“筛选”那栏,可以通过添加目录把 /snap/*** 目录加上,否则会过滤掉了。如下图:

其他会自动过滤掉即不备份的目录(有个人备份需求可参考上面那步添加),如下图:

法二、终端命令操作(高端)

# 备份
sudo timeshift --create --comments "快照名" --backup-device /dev/磁盘名
####  注释:磁盘名可以通过 `fdisk -l` 或 `df -TH` 来查看  ####
## @备份位置最好选择在非系统硬盘或移动U盘,但要保证磁盘类型是ext4等linux类型。 ##
## @否则暂时选系统盘也行。选好盘后备份数据默认会保存在该硬盘下根目录下的 `/timeshift` 目录下。##

# 查看。查看已存在的快照
sudo timeshift --list

# 恢复。选择上面已存在的其中一个快照进行恢复,如:快照'2024-07-01_18-00-00'。
sudo timeshift --restore --snapshot '2024-07-01_18-00-00' --skip-grub

注:

开机按 `ctrl + alt + F1(一般F1-F6都可以)进入tty终端,可以输入命令进行恢复。

如果命令终端都进不去,只能再做一个相同的系统的启动U盘(类似于重装系统),但不进入重装系统选项,而进入试用系统(如:Try Ubuntu),然后在线安装timeshift,再进行恢复(此时可以用命令也可以用图形界面操作了)。

使用tar进行备份与恢复

从开始的CentOS到现在的Ubuntu(也称乌班图:“来自南部非洲班图语“),传递着”我的存在是因为大家的存在”的价值观。Linux的哲学思想深深吸引着我————“一切皆文件”

身边好多朋友也在用Ubuntu,都说好用,很炫酷,但也易崩溃。这个问题也让我头疼。我重装系统不下三次了,每次最担心的就是数据丢失。用的最久的一次是1年多,还挺自豪,算给面子了~.~

遇到问题,就要着手解决问题。毕竟重装系统真的心塞。下面我要先说说我的想法,当然你也可以跳过这一部分,直接看下面的操作方法。

面临这个问题,我的第一个想法就是,系统备份。类似与VMware下的快照一样,可以给Ubuntu系统做个备份,储存下来以备不时之需。有人会问,系统都崩溃了,备份文件怎么用?对于这个问题,关于存储方面我想到的是云存储技术,毕竟现在云服务无处不在。实在不行将备份文件拷贝到U盘。关于如何运用备份文件恢复系统的方面我没有什么建议,对这方面不太懂。难道是类似于数据库的“事物回滚”!

下面就分享下我搜集到的方法吧,基本可以满足要求。

系统备份

linux秉承一切皆文件的思想,系统备份就相当于把整个/(根目录)所有文件打包压缩保存。

步骤 1:用sudo提升权限(关键)

备份系统目录(如/根目录)需要管理员权限,必须在命令前加sudo,否则会因权限不足失败。

步骤 2:确认/backup/tar目录存在(避免 “目录不存在” 错误)

如果/backup/tar目录尚未创建,sudo也无法在不存在的目录下创建文件,需先创建目录:

# 创建目录并赋予 root 权限(确保 sudo 能写入)
sudo mkdir -p /backup/tar
# 查看目录权限(确认 owner 是 root,且有写入权限)
ls -ld /backup/tar
# 输出应类似:drwxr-xr-x 2 root root 4096 9月  9 10:00 /backup/tar

步骤 3:补充排除 “高风险 / 无用目录”

备份根目录时,除了你已排除的目录,建议额外排除以下目录(避免备份无效数据或导致备份失败):

  • --exclude=/backup:避免 “备份文件包含自身”(递归备份,导致文件体积无限增大)。
  • --exclude=/sys:系统硬件信息目录,动态生成,无需备份。
  • --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:验证备份是否成功

命令执行完成后(可能需要 10-60 分钟,取决于系统数据量),通过以下命令确认备份文件存在且有效:

# 查看备份文件是否存在
ls -lh /backup/tar/UbuntuBackup_`date +%Y%m%d`.tar.gz
# 输出应类似:-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进行压缩的。所以要根据你自己情况换为你自己的备份文件目录和文件名。

参数:

  • -c: 新建一个备份文档
  • -v: 显示详细信息
  • -p: 保存权限,并应用到所有文件
  • -z: 用gzip压缩备份文档,减小空间
  • -f: 指定备份文件的路径
  • –exclude: 排除指定目录,不进行备份

Note: 注意–exclude参数,接下来谈谈那些目录没有备份,以及为什么不备份。

我的ubuntu系统,共有四个分区,分别是:/、/home、/boot、swap。

  • 非常建议系统备份的时候按照分区进行分别备份,并且也不建议安装系统的时候只给系统分一个分区。有四个分区的好处是,一般系统坏了都是/分区的问题,/home没什么关系,所以这种情况,我可以只还原/分区,其他分区完全可以不用动,系统就可以恢复,会节省很多时间。
  • 另外,为了保险起见,也可以对/home和/boot备份,但是备份频率完全没必要和/分区一样高。比如/分区每周备份一次,那/home和/boot完全可以一个月备份一次,因为这两个分区出问题的概率真的很小,而且变动也不会太频繁。

请注意,如果没有把/home或者/boot目录单独分一个区,一定不要加–exclude=/home或–exclude=/boot参数!!!

  • /proc:一个虚拟文件系统,系统运行的每一个进程都会自动在这个目录下面创建一个进程目录。既然是系统自动创建,也就没必要备份的必要了。
  • /tmp:一个临时文件夹,系统的一些临时文件会放在这里。
  • /lost+found:系统发生错误时(比如非法关机),可以在这里找回一些丢失文件。
  • /media:多媒体挂载点,像u盘、移动硬盘、windons分区等都会自动挂载到这个目录下。
  • /mnt:临时挂载点,你可以自己挂载一些文件系统到这里。
  • /run:系统从启动以来产生的一些信息文件。
  • /backup:备份文件存放文件夹,需要排除,避免重复备份。
  • /home:用户家目录,存放用户个人文件和应用程序。
  • /boot:和系统启动相关的文件,像grub相关文件都放在这里,这个目录很重要!

我再次强调一次,/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

最后还要提一下就是,有可能备份到最后系统会提示"tar: 由于前次错误,将以上次的错误状态退出",这个警告可以忽略,没什么影响的。

系统还原

系统备份的意义就在于系统哪天发生意外时可以系统还原拯救回来

这里有两种还原方式,如果你系统出问题了,但是还可以进入终端,那就可以直接解压备份文件进行还原。但是如果你连系统都不能登录了,就要使用LiveCD(U盘启动盘)进行还原了。

  • 直接操作

操作前切换到root,并且换到/根目录。

tar -xvpzf /backup/tar/UbuntuBackup_20250907.tar.gz -C /
  • LiveCD

操作之前请确保你已经有一个制作好的ubuntu U盘启动盘。进入系统后,打开终端还是先切换到root。

mkdir /mnt/sys
mount /dev/sdaX /mnt/sys
tar -xvpzf /media/myDisk/UbuntuBackup_boot_20250907.tar.gz -C /mnt/sys

注意先创建一个临时目录用于挂载你的/根目录分区,sdaX代表你的/根目录分区,如果不知道就用fdisk -l查看一下,另外如果你的移动硬盘没有被自动挂载,你也需要手动创建一个临时目录进行挂载。

Note:因为 tar还原是只会覆盖相同的文件,但是这种方法只是恢复备份时的文件,就是说如果某些文件丢失或损坏了,这样可以恢复修复这些文件,但不能删除自备份到恢复前这期间所生成的其它文件,说白了就是假如你备份系统时有1234这四个文件,如果三天后,由于某些原因变成了1234’5(4改变了),你恢复后,就会变成12345,其中4’恢复成备份时的文件,5保留。所以大家要是想彻底还原成备份时候的样子最好彻底删除根目录下的所有文件,然后再还原,这样就可以还原成备份时的样子了。

删除整个文件系统,比如运行命令rm -fr /*,那么你还原系统后一定要把你之前没有备份的目录手动创建,不然重启系统是有问题的。

mkdir proc tmp lost+found media mnt run

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Centos7安装完后无法联网的解决方法

    Centos7安装完后无法联网的解决方法

    这篇文章主要为大家详细介绍了Centos7安装完后无法联网的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Apache No space left on device的解决办法

    Apache No space left on device的解决办法

    [Fri Aug 15 10:54:31 2008] [emerg] (28)No space left on device: Couldn't create accept lockdf一下发现不是磁盘空间的问题。Google了一下就找到了解决方案,原来是系统的信号量(?)不够用了。
    2008-08-08
  • Linux本地部署DeepSeek的详细流程

    Linux本地部署DeepSeek的详细流程

    ​​​​​​​DeepSeek 是一个开源的生物信息学工具,主要用于分析高通量测序(HTS)数据,为了在 Linux 系统上本地部署 DeepSeek,你需要按照以下步骤操作,从环境准备到工具安装和运行,需要的朋友可以参考下
    2025-09-09
  • 分享apache http服务器设置虚拟主机的方法

    分享apache http服务器设置虚拟主机的方法

    对于多个域名绑定到一台服务器上,需要进行虚拟主机(virtual host)相关的设置,假设我要设置fuwu.jb51.net到一台服务器上,应该如何做虚拟主机的设置呢?
    2011-08-08
  • CentOS 6.5平台本地YUM配置的方法

    CentOS 6.5平台本地YUM配置的方法

    这篇文章主要介绍了CentOS 6.5平台本地YUM配置的方法,较为详细的分析了CentOS本地YUM配置的具体步骤、相关命令与使用技巧,需要的朋友可以参考下
    2018-04-04
  • Linux解决rsyslog服务占用内存过高的办法

    Linux解决rsyslog服务占用内存过高的办法

    当我们使用top命令查看内存占用时,发现rsyslogd内存占用很高,所以接下来这篇文章给大家介绍了Linux解决rsyslog服务占用内存过高的办法,文中有详细的图文介绍,需要的朋友可以参考下
    2024-05-05
  • Linux利用inotify和rsync服务实现数据实时同步的原理解析

    Linux利用inotify和rsync服务实现数据实时同步的原理解析

    inotify是系统内核的一个监控服务,属于操作系统内核的一个特有机制,用于监控文件的信息变化,这篇文章主要介绍了Linux利用inotify和rsync服务实现数据实时同步,需要的朋友可以参考下
    2022-10-10
  • 详解linux 定时任务 crontabs 安装及使用方法

    详解linux 定时任务 crontabs 安装及使用方法

    这篇文章主要介绍了linux 定时任务 crontabs 安装及使用方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • Linux配置VSFTP服务器的方法

    Linux配置VSFTP服务器的方法

    下面小编就为大家带来一篇Linux配置VSFTP服务器的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • 一文详解Linux如何设置特殊权限

    一文详解Linux如何设置特殊权限

    setuid,setgid和sticky是 Linux 中的特殊权限,可以对文件和目录的访问和执行方式提供额外的控制,下面就跟随小编一起来了解一下它们的具体使用吧
    2024-12-12

最新评论