= 使用tar命令来实现Linux系统的备份与恢复
发表于 2019-08-06 更新于 2020-08-12 分类于 Linux 阅读次数:2607 Valine:1
本文字数: 3k 阅读时长 ≈ 3 分钟
有时我们需要调整 Linux系统 挂载点或者对 Linux系统 进行备份和恢复,我们可以通过 tar 命令来实现。
- 本文适用于具有一定基础和动手能力的 Linux 用户, 不清楚之处还请自行百度
- 系统的备份与恢复具有很大风险,在操作之前还请备份重要数据先。
以 Ubuntu18.04 系统为例
系统配置
- OS: Ubuntu 18.04
- mem: 16G
- disk1: TOSHIBA 256G 2280 m.2 sata
- disk2: HS-C2000Pro 1024
- Display: NVIDIA GTX 1050 (cuda 已配置)
磁盘分区表
root@l: lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 256G 0 disk
├─sda1 8:1 0 99M 0 part /boot/efi
├─sda2 8:2 0 216M 0 part
└─sda3 8:3 0 40G 0 part /
sdb 8:0 0 1024G 0 disk
├─sdb1 8:1 0 99M 0 part
├─sdb2 8:2 0 128M 0 part
├─sdb3 8:2 0 873G 0 part
└─sdb4 8:3 0 150G 0 part对于整个系统进行备份与恢复
- 示例:将系统从
/dev/sda3移动到/dev/sdb4
准备工作
- 删除不必要的日志文件
- 取消不重要 盘/分区 的挂载
开始备份
- 同理,您也可以将压缩以后的文件任意移动到一个足够大的分区中,然后使用U盘引导,进入 live 桌面
- 当然你也可以通过网络实现实时远程备份,如使用
netcat(nc)和ssh,或者先备份,之后再通过网络发送压缩包。
- 进入了单人模式,首先将不必要的挂载分区给取消挂载
- 挂载要存放文件的分区
- 压缩根目录
#备份系统
root@l: cd / && apt clean
root@l: mount /dev/sdb4 /media/D
root@l: tar -cvpzf /media/D/backup.tar.gz \
--exclude=/media \
--exclude=/media/D/backup.tar.gz \
--exclude=/proc \
--exclude=/tmp \
--exclude=/mnt \
--exclude=/dev \
--exclude=/sys \
--exclude=/run \
--exclude=/var/cache/apt/archives \
--one-file-system /c:创建压缩包
v:输出压缩信息
p:保持文件原有的权限和属性
z:压缩文件为
.gzf:指定文件名
–exclude=/example/path:不压缩指定路径下面的文件
-one-file-system:不备份其他文件系统中的文件(只备份和系统根分区一样分区类型的文件)
如果您希望其他文件系统(例如 /home分区或安装在 /media备份中的外部介质),您需要单独备份它们,或省略此标志。如果省略此标志,则需要添加几个 –exclude= 参数以避免您不想要的文件系统。
/proc 和 /sys 是虚拟文件系统,它为正在运行的内核的变量提供接口,因此没有必要尝试备份或还原它们。 /dev 是一个tmpfs,其内容由udev动态创建和删除,因此您也没有必要尝试备份或还原它。同样,/run 是一个 tmpfs,它保存有关系统运行的一些变量.
- For more: Here
注意:
--exclude=的排除是递归的,把相对越长的目录写在前面。要不然就不会备份或者排除该目录
分卷压缩
- 注意:因为 FAT32 最大支持文件大小为4G而且系统备份 一般 比较大(一般 30G 起步),不强制要求,自行抉择
压缩后分卷
split -d -b 3900m /path/to/backup.tar.gz /name/of/backup.tar.gz- 简单地拆分由/path/to/backup.tar.gz指定的现有文件。
压缩前分卷
tar -cvpz <put options here> / | split -d -b 3900m - /name/of/backup.tar.gz- 直到管道(|)的前半部分与我们之前的例子相同,但是省略了 f 选项。去掉 f 参数,tar会将存档输出到标准输出,然后通过管道输出到split命令。
-d此选项表示存档后缀将是数字而不是字母,每个拆分将从01开始顺序,并随每个新的拆分文件而增加。-b此选项指定要拆分的大小,在此示例中,已将其设置为 3900MB 以适合FAT32分区。-连字符是输入文件的占位符(通常是已创建的实际文件),并指示拆分以使用标准输入。/name/of/backup.tar.gz是将应用于所有生成的拆分文件的前缀。它应该指向您希望放置存档的文件夹。在这个示例中,第一个拆分归档文件将位于/name/of/目录中,并命名为backup.tar.gz.01
合并分卷文件
- cd 进入文件所在的目录
- 使用
cat *tar.gz* |tar -xvpzf - -C /提取到根目录(也可以修改为其他目录)
开始恢复
- 对于同一台电脑进行备份直接跟着教程走
- 不同的电脑实现备份的话,可以先做一个启动盘,然后U盘启动进入live桌面,接下来操作是一样的
- 对于已有系统想替换掉的话,可以和第二点进行一样的做法,不过记得 备份和格式化分区
- 重启,正常进入系统
- 挂载要安装系统的分区
- 解压
- 创建缺少的文件夹
- 挂载启动分区
- 安装
grub - reboot
root@l: mount /dev/sdb4 /media/D
root@l: cd /media/D/
root@l: sudo tar -xvpzf /path/to/backup.tar.gz -C /media/D/ --numeric-owner
root@l: mkdir proc sys mnt media tmp dev run
root@l: sudo -s
# 挂载启动分区
root@l: mount /dev/sdb1 /media/c
root@l: mount -o bind /sys sys
root@l: mount -o proc rpoc
root@l: cd / ; for f in dev dev/pts proc ; do mount --bind /$f /media/D/$f ; done
root@l: chroot /media/D/
root@l: grub-install --recheck --no-floppy /dev/sdb1
root@l: echo "`blkid | grep sda1 | awk '{printf $2}' | sed 's/"//g'` /opt ext4 defaults 0 0" >> /etc/fstab
root@l: echo "`blkid | grep sda4 | awk '{printf $2}' | sed 's/"//g'` /opt ext4 defaults 0 0" >> /etc/fstab
root@l: vim /etc/fstab
root@l: update-grub
root@l: exit
root@l: rebootx解压文件- -C解压至指定路径
- –numeric-owner - 此选项告诉tar恢复归档文件的数字所有者,而不是匹配要还原的环境中的任何用户名。因为这是您要恢复的系统中的用户
id:s不一定与您用于恢复的系统匹配(例如: live CD )
参见
要不看点其他的吧?..
- 使用tar命令来实现对Linux系统挂载点的调整
- Linux终端字体上色与常用命令
- SSH Config
- Ubuntu18.04配置Flat-remiax主题
- lvm简单使用以及grub2菜单不显示的解决方法
-------------本文结束再接再厉-------------
文章作者:IITII
发布时间:2019年08月06日 - 09:08
最后更新:2020年08月12日 - 02:08
原始链接:https://iitii.github.io/2019/08/06/1/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。
打赏

微信支付

支付宝
提交
1 评论
Anonymous Edge 84.0.522.40 Windows 10/11
2020-07-20回复
你好,博主,在开始恢复环节的bash代码中从第6行挂载启动分区开始我没有太明白,这个启动分区是从哪里来的?是自己对原始硬盘分区得来的吗?因为我的硬盘只有一个/dev/sda1的分区,再之后的操作中感觉并没有用到/dev/sdb1呀。再之后的几个mount操作,也不太明白是什么意思。
IITII Chrome 83.0.4103.116 Windows 10/11
2020-07-23回复
@Anonymous , 前面我给出了 我的 硬盘分区表,原本 /dev/sda1 为 EFI 引导分区, /dev/sda3 为主分区,sda、sdb 分区表均采用 GUID,现在是将 EFI 引导分区备份并恢复到 /dev/sdb1,主分区备份并 恢复到 /dev/sdb4
加载更多...
Powered By Valine
v1.5.2
- 文章目录
- 站点概览
![]()
IITII
山野之人,粗鄙之语
74 分类
279 标签
© 2018 – 2024 IITII | 站点总字数: 264k | 站点阅读时长 ≈ 4:01
本站总访问量 132793 次
小破站已经在风雨中度过了 2233 天 21 小时 30 分 31 秒