在LInux中,有一种特殊的系统备份技术,因为Linux的特殊启动模式和结构,我们可以使用手动方法方便的完成全盘备份,这篇博客就是关于此技术的记录。
在LInux中,有一种特殊的系统备份技术,因为Linux的特殊启动模式和结构,我们可以使用手动方法方便的完成全盘备份,这篇博客就是关于此技术的记录。
我们使用此操作系统来进行此技术测试操作:Ubuntu 24.04 LTS
执行以下命令可以复制Linux的Rootfs.
mkdir bak
cd bak
tar -cvpzf rootfs.tar.gz --hard-dereference --acls --xattrs --one-file-system --exclude $PWD /
以下是参数表含义:
| 参数 | 含义 |
|---|---|
| -c | 创建一个新归档 |
| -v | 输出详细信息 |
| -p | 保留权限 |
| -z | 通过 gzip 过滤归档 |
| -f | 使用归档文件或 ARCHIVE 设备 |
| --hard-dereference | 追踪硬链接,由于这是系统备份,所以需要保留所有链接关系和数据,这是可选的 |
| --dereference | 追踪软链接,需要保留所有数据和链接关系,防止恢复失败,这是可选的 |
| --acls | 保留ACLS权限 |
| --xattrs | 保留扩展权限位 |
| --one-file-system | 单文件系统归档,这对于我们的系统rootfs备份是非常重要的参数 |
| --exclude | 例外目录设置 |
执行以下命令来以文本方式备份GPT分区表(其实也包括传统分区表):
sfdisk --dump /dev/vda > gpt_tables.txt
/dev/vda: 这是磁盘分区表所在设备,也就是你的磁盘。
现在执行二进制备份:
sfdisk --backup-pt-sectors /dev/vda -O bak
MBR位于磁盘LBA 0的地方,所以命令是:
dd if=/dev/vda of=mbr.bin skip=0 bs=512 count=1 status=progress
UEFI分区一般是磁盘的第一个分区,这里假定是/dev/vda1,一般使用dd即可备份,因为它的容量不大
dd if=/dev/vda1 of=uefi-vda1.bin status=progress
到现在,我们的备份工作完成,接下来是将其压缩和归档
mkisofs -J -udf -v -udf -iso-level 3 -allow-limited-size -o bak.iso bak
tar -acvf bak.tar.gz bak