首页 > 解决方案 > 备份和恢复 e2image 如何正确传输 lzop 的输出?

问题描述

我最长时间使用 dd 和 gzip 作为我的备份解决方案。我一直在尝试更快的备份方式。

在我的 Ubuntu 18.04 系统上,到目前为止,这是创建 ext2/3/4 分区的压缩备份映像的最快方法:

sudo e2image -ra -p /dev/sda1 - | lzop -1 > `date +%F`.e2image2.lzo

执行上述命令时,未安装 sda1,我被引导到 sdb1。对于任何对该主题感兴趣的人,我只是在这里解决了问题:https ://askubuntu.com/questions/1063085/

现在我有了备份映像2018-08-08.e2image.lzo,我需要一种方法将其恢复到 /dev/sda1

lzop 手册页给出了这个 tar 的例子:

lzop -dc some-file.tar.lzo | tar -xvf -

我试图通过将 lzop 解压缩示例的输出传递到 e2image 来调整该示例:

lzop -dc 2018-08-08.e2image.lzo | e2image -ra -p - /dev/sda1

e2image 1.44.1 (24-Mar-2018)
e2image: No such file or directory while trying to open -

e2image 似乎不喜欢我将输入文件指定为“-”的方式,我认为这是使用管道时使用标准输入的正确方式。

任何解决此处问题的帮助表示赞赏。

我也会使用标签 e2image 和 lzop,但我没有足够的声誉来添加这些新标签。

标签: pipebackuprestore

解决方案


您可以将输出从 lzop 传输到 dd;这可能是最简单和最一致的方式。

如果您知道输出设备已预初始化为全零,您可以使用 e2fsprogs 的 contrib 目录中的 make-sparse.c 程序。make-sparse 程序将跳过写入全为零的块,并查找存在非零块的偏移量,并仅写入非零块。如果存在全零块的数据文件,并且块设备预初始化为全零,则使用 make-sparse 写入块设备将导致数据文件损坏。make-space 程序设计用于获取 e2image 文件并将其写入稀疏文件。

但最简单的方法是只使用 dd:

lzop -dc 2018-08-08.e2image.lzo | dd of=/dev/sda1 bs=4k

推荐阅读