使用 dd、tar、gz、xz 对 /dev/sdX 进行最完整的备份

使用 dd、tar、gz、xz 对 /dev/sdX 进行最完整的备份

备份/恢复整个 /dev/sdX(到/从文件)包括设备的最完整方法是什么分区表分区标志、所有可能的元数据、所有者、文件权限、ACL、创建/访问/更改时间,文件属性(例如仅附加(a)或不可变(i)),属性访问权限标志(如 setuid、setgid、sticky bit)、文件系统特定属性等,如果我想获取压缩备份文件?/dev/sdX 的分区可以格式化为 ext4、fat、exfat、ntfs,每个分区是否可以采用不同的文件系统。

最简单的方法是使用dd或甚至是dump实用程序,但结果我们会得到很大的未压缩文件(.iso、.img、.bin 等)。但接下来呢?

我懂了一些选择喜欢使用dd | gzipdd | tar管道,但我不确定这是否会保存所有必要的数据这个答案。此外,我不确定gzip是否可以提供最有效的压缩机制。

其他选择是使用最现代、最高效和多线程的压缩工具,如xz.但男人说

成功压缩或解压文件后,xz 会将源文件的所有者、组、权限、访问时间和修改时间复制到目标文件。如果复制组失败,则会修改权限,以使没有权限访问源文件的用户无法访问目标文件。xz 尚不支持复制其他元数据,如访问控制列表或扩展属性。

如果我在管道中使用 dd 复制块而不是文件,这有关系吗?管道sudo dd if=/dev/sdX | xz -9 --threads=0 --keep -v > output.img.xz足以保存所有指定的数据吗?管道可以xz -dck output.img.xz | dd of=/dev/sdX status=progress恢复备份吗?我需要担心元数据(属性、ACL 等)吗?

我不确定我是否不认为这句话来自xz 的手册

--keep 不删除输入文件。从 xz 5.2.6 开始,即使输入是指向常规文件的符号链接、具有多个硬链接或设置了 setuid、setgid 或 sticky 位,此选项也会使 xz 压缩或解压缩。setuid、setgid 和 sticky 位不会被复制到目标文件。

我是否需要担心以下命令选项--xattrs--acls当我使用dd | tar管道时?

最后,如果我备份整个 /dev/sdX 并使用压缩文件作为中间备份位置,并且希望在恢复后获得与原始设备最相同的副本,我是否必须始终指定命令bs的属性dd?在这种情况下,应该选择哪种 bs 大小?

也许我需要更喜欢fsarchiver或者用类似的东西来代替 dd,但是它不太常用并且还没有发布 v1.x。

相关内容