备份/恢复整个 /dev/sdX(到/从文件)包括设备的最完整方法是什么分区表和分区标志、所有可能的元数据、所有者、文件权限、ACL、创建/访问/更改时间,文件属性(例如仅附加(a)或不可变(i)),属性,访问权限标志(如 setuid、setgid、sticky bit)、文件系统特定属性等,如果我想获取压缩备份文件?/dev/sdX 的分区可以格式化为 ext4、fat、exfat、ntfs,每个分区是否可以采用不同的文件系统。
最简单的方法是使用dd
或甚至是dump
实用程序,但结果我们会得到很大的未压缩文件(.iso、.img、.bin 等)。但接下来呢?
我懂了一些选择喜欢使用dd | gzip
或dd | 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。