压缩和解压缩 dd 图像 - zstd 而不是 gzip

blu*_*ray 7 command-line compression dd zstd

早些时候我使用 fsarchiver 创建压缩分区映像。由于一些奇怪的行为,我选择用dd.

但是,我喜欢 fsarchiver 用zstd压缩的方式

所以,我学习了,

这些基本上说的是,我必须使用以下命令进行备份

dd if=/dev/sda2 status=progress | gzip -c > /media/mint/Data/_Fsarchiver/MintV1.img.gz
Run Code Online (Sandbox Code Playgroud)

和以下命令来恢复

gunzip -c /media/mint/Data/_Fsarchiver/MintV1.img.gz | dd of=/dev/sda2 status=progress
Run Code Online (Sandbox Code Playgroud)

现在我想更换gzip -cgunzip -czstdzstd -d

我想出的命令是

压缩

sudo dd if=/dev/sda2 status=progress | zstd -16vT6 > /media/mint/Data/_Fsarchiver/MintV1.zst
Run Code Online (Sandbox Code Playgroud)

解压

zstd -vdcfT6 /media/mint/Data/_Fsarchiver/MintV1.zst | dd of=/dev/sda2 status=progress
Run Code Online (Sandbox Code Playgroud)

尝试这些命令是否安全,还是我做错了什么?

roa*_*ima 14

那样使用dd(没有任何选择)会让你的生活变得悲惨。把它完全剪掉。或者至少增加它的块大小并告诉它不要反对短读。

  1. 如果没有dd,首先运行sudo -s以获取 root shell:

    gzip </dev/sda2 >/media/mint/Data/_Fsarchiver/MintV1.img.gz
    gunzip </media/mint/Data/_Fsarchiver/MintV1.img.gz >/dev/sda2
    
    Run Code Online (Sandbox Code Playgroud)

    您的zstd命令看起来完全合理,但只是省略dd并直接以 root 身份读/写设备。(我的版本不明白你的T6所以我在这里省略了。)

    zstd -16v </dev/sda2 >/media/mint/Data/_Fsarchiver/MintV1.zst    
    zstdcat -v /media/mint/Data/_Fsarchiver/MintV1.zst >/dev/sda2
    
    Run Code Online (Sandbox Code Playgroud)
  2. With dd,或者前缀ddwithsudo或 usesudo -s来获得一个 root shell:

    dd bs=1M iflag=fullblock if=/dev/sda2 status=progress | gzip >/media/mint/Data/_Fsarchiver/MintV1.img.gz
    gzcat /media/mint/Data/_Fsarchiver/MintV1.img.gz | dd bs=1M iflag=fullblock of=/dev/sda2 status=progress
    
    dd bs=1M iflag=fullblock if=/dev/sda2 status=progress | zstd -16v >/media/mint/Data/_Fsarchiver/MintV1.img.zst
    zstdcat /media/mint/Data/_Fsarchiver/MintV1.img.zst | dd bs=1M iflag=fullblock of=/dev/sda2 status=progress
    
    Run Code Online (Sandbox Code Playgroud)
  3. pv代替dd。使用sudo pvsudo -s预先获取root shell:

    pv </dev/sda2 | gzip >/media/mint/Data/_Fsarchiver/MintV1.img.gz
    gzcat /media/mint/Data/_Fsarchiver/MintV1.img.gz | pv >/dev/sda2
    
    pv </dev/sda2 | zstd -16 >/media/mint/Data/_Fsarchiver/MintV1.img.zst
    zstdzcat /media/mint/Data/_Fsarchiver/MintV1.img.zst | pv >/dev/sda2
    
    Run Code Online (Sandbox Code Playgroud)

    另请参阅组合 dd 和 pv 时的语法