备份 Ext4 分区的正确姿势

2022-07-27 15:13:01 +08:00
 monetto

如题,有一个 Ubuntu 系统的 U 盘,想要做全盘备份,但是看了下 Diskgenius 全盘备份功能必须 付费版才能使用。

由于 U 盘比较大( 256G ),无法使用 dd 命令进行备份(也需要 256G 空间以供备份)

求大佬,大容量 Ext4 分区备份的正确姿势是什么

5962 次点击
所在节点    Linux
72 条回复
wzhpro
2022-07-27 15:17:11 +08:00
rsync ?
tril
2022-07-27 15:20:01 +08:00
dd 的同时压缩? dd if=xxx | gzip > /aaa/bbb/xxx.gz
ashong
2022-07-27 15:21:13 +08:00
clonezilla disk-image 方式
yfugibr
2022-07-27 15:22:03 +08:00
`dd if=/dev/sda | gzip > sda.img` ?
liyafe1997
2022-07-27 15:29:53 +08:00
dd 加 gzip 是个不错的选择
zx900930
2022-07-27 15:45:23 +08:00
这时候就要提虚拟化的好处了, 直接备份.qcow2 虚拟磁盘+zstd 压缩
codehz
2022-07-27 15:58:06 +08:00
所以为啥楼上非得加 dd ,直接 gzip -c /dev/sda1 > xxx.tar.gz 不就好了(
此外 ext4 并没有奇怪的特性导致需要真的全盘备份才能保持,所以可以按文件备份,直接 tar gz 的形式就不错
但是 tar 格式本身其实不太友好——特别是没法随机访问文件,所以可以换个文件系统,例如 squashfs (但是这个压缩比较慢),或者比较新且性能不错的 https://github.com/mhx/dwarfs 这类
seers
2022-07-27 15:58:32 +08:00
自己找偏移然后 dd (
HarveyLiu
2022-07-27 16:14:28 +08:00
台湾:Clonezilla(再生龙)
shijingshijing
2022-07-27 16:21:40 +08:00
@codehz 7# gzip 可能会碰到权限的问题吧,dd 我不知道,上面说的 clonezilla 以 Live 启动盘的方式挂载 /dev/sda1 是绝对可以实现楼主想要的。
codehz
2022-07-27 16:26:51 +08:00
@shijingshijing dd 又不会自动提权,gzip 也不会自己降低权限( dd 的这个用法根本毫无价值)
hahasong
2022-07-27 16:41:51 +08:00
进 PE ghost
pagxir
2022-07-27 16:46:53 +08:00
@codehz 你觉得毫无价值,那是因为你对 IO 理解的不够。磁盘是低速设备,而 gzip 是 CPU 密集操作,直接操作块设备就会直接绕过文件系统的预读功能,所以在 gzip 跟磁盘之间引入 dd 可以间接引入预读,减少 gzip 读盘的等待时间。
codehz
2022-07-27 17:06:53 +08:00
@pagxir 谁和你说 dd 会增加缓存的??相反,你必须在 dd 中指定 iflag=direct 才可以“绕过”页面缓存(同时 bypass 预读),而多数程序实现的读取都不会用 direct io (因为很多文件系统根本不支持,加上通常只会减速,只有数据库这种特殊用例才会主动开选项去用 direct io ,普通程序自然也不会无故增加这种无聊的选项)
而且,如果你不加任何选项,dd 会使用非常小的块作为单位( 512 字节)进行读取,这显然多数情况都不是最优解(虽然影响也不是很大,只是会增加系统调用频率)
pagxir
2022-07-27 17:11:18 +08:00
@codehz 谁跟你说 dd 啥参数都不戴了。这场景下,你操作的是裸设备不存在预读一说。这就是 bs=16k 跟 bs=16M 速度可以差很远的原因。
codehz
2022-07-27 17:20:08 +08:00
@pagxir 楼上不是都没参数的吗?我说 “这个用法” 有错吗?
此外块设备怎么就没预读了,你是不是自己运行了 blockdev --setra 0 /dev/sda 然后忘记了?
codehz
2022-07-27 17:26:58 +08:00
@pagxir 哦,想起来了,你是在混淆裸设备和块设备,但是这里备份的是块设备,特别考虑的分区的话肯定不能是裸的)
neutrinos
2022-07-27 17:27:27 +08:00
@zx900930 sudo -Q /dev/sda1 - | gzip -c sda1.qcow2.gz
pagxir
2022-07-27 17:29:01 +08:00
你说他们这个没有参数的用法等价于直接直接 gzip -c /dev/block ,确实是这样。但是你说引入 dd 没有意义我不赞同,基本上很少有人不带参数的直接使用 dd 。印象中,不是所有的硬件都支持硬件预取的,一般也不会去调整它。
neutrinos
2022-07-27 17:29:14 +08:00
@neutrinos 好像不包含 data block ,没试过

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/869026

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX