代码之家  ›  专栏  ›  技术社区  ›  Jieiku

备份和还原e2image如何正确地从lzop管道输出?

  •  0
  • Jieiku  · 技术社区  · 7 年前

    我使用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.e2图像.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,但我没有足够的声誉来添加这些新标签。

    1 回复  |  直到 7 年前
        1
  •  2
  •   user703016 Niall    6 年前

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

    如果知道输出设备已预先初始化为所有零,则可以使用e2fsprogs的contrib目录中的make sparse.c程序。make sparse程序将跳过写入全部为零的块,并将lseek跳到存在非零块的偏移量,而只写入非零块。如果有所有零块的数据文件,并且块设备是 预先初始化为所有零,然后使用make sparse写入块设备将导致数据文件损坏。make space progam是为获取e2image文件并将其写入稀疏文件而设计的。

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

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