使用 tar 命令备份与还原 Linux 系统

下边的教程以 Ubuntu 为例,使用的是 Ubuntu20.04 LiveCD(Desktop or Server版的安装镜像都可以)

准备工作

这里假设可以正常进入要备份的系统,如果无法正常进入,可以通过LiveCD的方式启动系统
假设要备份当前整个系统,备份到我的移动硬盘
下面开始分区挂载,挂载移动硬盘中的某个分区

首先使用命令:lsblk
可以查看当前系统中存在的块设备(SATA硬盘,NVMe固态硬盘,U盘等)

然后需要确认,那个设备是你的硬盘,如果不确定那个设备是移动硬盘
可以在插入硬盘前后分别使用 lsblk,这样通过对比 应该就可以确定
插入之前:

插入之后:

我这里插入之后自动挂载了,如果你们那里没有自动挂载的话需要手动挂载,操作如下:

sudo mkdir -p /media/vzuer/LDP
# 挂载前 要确保挂载点所在目录是存在的
sudo mount /dev/sdc4 /media/vzuer/LDP

系统备份

# 最好在 bash 下执行 我当时在 fish 下执行时 echo `date +%Y-%m-%d` 就没有结果
# 先切换成 root
su -
# 进入根目录
cd /
# tar 命令开始备份
tar -czvpf /media/vzuer/LDP/backup-`date +%Y-%m-%d`.tar.gz --one-file-system /
# size 39GB
# time 13:06-13:24 18mins

–one-file-system 选项的含义:
复制文件或目录存放的文件系统必须和tar命令当前执行的文件系统相同,否则不执行;
也就是讲,不处理其他分区的文件。(可忽略mount挂载分区的问题)

备份完成的部分结果,如下所示:

从上图可知,/boot/efi挂载的ESP分区没有备份,不过没关系,我们等会儿会重建引导

下边是不用 --one-file-system 的备份方式,这样可以手动排除不需要备份的目录

su -
cd / # THIS CD IS IMPORTANT THE FOLLOWING LONG COMMAND IS RUN FROM /
tar -cvpzf /media/vzuer/LDP/backup-`date +%Y-%m-%d`.tar.gz --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run --exclude=/mnt --exclude=/media --exclude=/tmp --exclude=/lost+found --exclude=/var/log --exclude=/var/cache/apt/archives --exclude=/usr/src/linux-headers* --exclude=/home/*/.gvfs --exclude=/home/*/.cache --exclude=/home/*/.local/share/Trash /
# time 13:31-13:49 18mins

https://help.ubuntu.com/community/BackupYourSystem/TAR

系统还原

这里假设要将系统迁移到,一块全新的硬盘,从零开始恢复:

恢复时,最好选择同一硬件平台,要不然由于显卡驱动之类的问题,
会导致无法通过图形界面进入系统,只能通过 tty 的方式进入

分区、格式化、挂载的操作步骤如下:

# 分区前先查看并确定目标磁盘分区的设备名 类似于 /dev/sda 或者 /dev/nvme0n1之类的
fdisk -l
lsblk
# 以上两个命令都可以

# 选定要分区的块设备
fdisk /dev/sda

# 输入 m 可以查看分区工具 fdisk 的使用帮助
: m # help

# 新建磁盘分区表
# 我选择的是 GPT + UEFI 因此上边只需要输入 g
# 如果是 MBR + Legacy BIOS 的启动方式则只需要键入 o
: g # new GPT partition table
: o # new MBR/DOS partition table

# 建立新分区
: n # new partition
# n 之后的分区号和起始扇区号都可以默认,直接回车即可

# 在终止扇区号那里,输入分区大小,如下
: +512M # for ESP partition
# 然后,再次输入 n 重复上边的操作,根据需要,新建其他分区

# 最后输入 w 保存操作 
: w # save, from RAM write to disk

# 格式化
# ESP 分区 需要格式化为 FAT 格式
mkfs.fat -F32 /dev/sda1
# 一般 Linux 系统分区为 ext4 格式
mkfs.ext4 /dev/sda2

# 挂载
mount /dev/sda2 /mnt
# /mnt 相当于新系统的根目录 /

# 挂载点不存在时,需先创建目录
# mkdir -p /mnt/boot/efi # -p 选项,可以递归地创建层级目录
mount /dev/sda1 /mnt/boot/efi

解压镜像

# 挂载移动硬盘
mkdir -p /media/vzuer/LDP
mount /dev/sdb4 /media/vzuer/LDP

# 解压镜像
cd /mnt
tar -xvzpf /media/vzuer/LDP/backup.tar.gz -C /mnt --numeric-owner

–numeric-owner 的含义:
以UID和GID代替用户名和组名,这样可以避免 tar 命令去匹配 LiveCD 中的用户和组
LiveCD 中实际上也没有备份文件所属的用户和组

重建引导

# 写入新硬盘的 UUID 以实现开机自动挂载此硬盘
# 如果是 Arch 的 LiveCD 可以使用下面的命令
genfstab -U /mnt >> /mnt/etc/fstab

# 不是的话比如 Ubuntu 则需要先查看新硬盘的 UUID
sudo blkid
# 然后 再通过 nano vim gedit 等编辑器
# 手动写入到 /etc/fstab 

# 查看是否写入成功
cat /mnt/etc/fstab

# 新建 目录 比如 dev proc sys 等备份时排除的目录
cd /mnt
mkdir dev proc sys run tmp lost+found mnt media  

# 将Live CD中的 dev proc sys 绑定到新系统
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys

# 切换到新系统
chroot /mnt

# 切换为 root
# su -
sudo -s

# 安装grub 重建引导
# MBR Legacy
grub-install --target=i386-pc /dev/sdX

# GPT UEFI
grub-install --target=x86_64-efi --efi-directory=/boot/efi --recheck

# 更新配置文件 grub.cfg
# update-grub
grub-mkconfig -o /boot/grub/grub.cfg

# 退出新系统
exit

# 重启系统
reboot

https://blog.csdn.net/weixin_26913055/article/details/116703291
https://blog.csdn.net/weixin_28909289/article/details/116577564
https://help.ubuntu.com/community/Fstab

最后是我当时在操作过程中遇到的一些问题:
问题 1:
EFI variables are not supported on this system
这个问题发生在给新系统安装 grub时,当时我用的是 ArchLinux LiveCD

推测是 Arch LiveCD 的原因 改用 Ubuntu LiveCD 后问题解决

问题 2:

/dev/sda2: clean, 876670 files,  13769241/39193339 blocks
Finished Terminate Plymouth Boot Screen
Finished Set console scheme

主要是因为驱动的问题,因为我将实体机上的系统迁移到了虚拟机上,
而实体机上当时装的是 Nvidia 的图形驱动,如果迁移的硬件平台一致的话,就不会有这个问题
虽然卡在这个界面不动,但是按 Ctrl+Alt+F2,通过没有图形界面的 tty2 就可以登录

登录后,安装 VM ware 虚拟机的显卡驱动
可以直接, 自动检测安装:sudo ubuntu-drivers autoinstall
也可以先查看,再手动安装:sudo ubuntu-drivers devices

vzuer@hp-288-pro ~> sudo ubuntu-drivers devices              (base) 
== /sys/devices/pci0000:00/0000:00:0f.0 ==
modalias : pci:v000015ADd00000405sv000015ADsd00000405bc03sc00i00
vendor   : VMware
model    : SVGA II Adapter
driver   : open-vm-tools-desktop - distro free

安装 VM ware 虚拟机的显卡驱动
sudo apt install open-vm-tools-desktop
也可以安装vm-tools:sudo apt install open-vm-tools

下面是当时参考的链接:

问题 3:
在 ubuntu 的 tty 模式下 不能正常显示中文 需要修改语言环境

使用 vim编辑器,将所有的 zh_CN替换为 en_US即可
先打开此文件:sudo vim /etc/default/locale
在命令模式下,查找替换::%s/zh_CN/en_US/g
最后,保存退出::wq

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值