早些时候我使用 fsarchiver 创建压缩分区映像。由于一些奇怪的行为我选择将其替换为dd
.
不过,我喜欢 fsarchiver 压缩的方式兹标准。
所以,我研究了,
这些实质上是说,我必须使用以下命令来备份
dd if=/dev/sda2 status=progress | gzip -c > /media/mint/Data/_Fsarchiver/MintV1.img.gz
以及以下命令来恢复
gunzip -c /media/mint/Data/_Fsarchiver/MintV1.img.gz | dd of=/dev/sda2 status=progress
现在我想用gzip -c
&替换&gunzip -c
zstd
zstd -d
我想出的命令是
压缩
sudo dd if=/dev/sda2 status=progress | zstd -16vT6 > /media/mint/Data/_Fsarchiver/MintV1.zst
解压
zstd -vdcfT6 /media/mint/Data/_Fsarchiver/MintV1.zst | dd of=/dev/sda2 status=progress
尝试这些命令是否安全,或者我做错了什么?
答案1
像这样使用dd
(没有任何选择)会让你的生活变得悲惨。只要把它完全剪掉就可以了。或者至少增加其块大小并告诉它不要反对短读取。
如果没有
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
您的
zstd
命令看起来完全合理,但只需省略dd
并直接以 root 身份读/写设备即可。 (我的版本不理解你的T6
,所以我在这里省略了。)zstd -16v </dev/sda2 >/media/mint/Data/_Fsarchiver/MintV1.zst zstdcat -v /media/mint/Data/_Fsarchiver/MintV1.zst >/dev/sda2
使用 时,可以使用with
dd
前缀或使用来获取 root shell:dd
sudo
sudo -s
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
用
pv
代替dd
.预先使用sudo -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
另请参阅组合 dd 和 pv 时的语法
与往常一样,要使用提升的权限进行读取,请更改command <source
为sudo cat source | command
,要使用提升的权限进行写入,请更改command >target
为command | sudo tee target >/dev/null
。
答案2
zstd
支持与 相同的命令和管道功能gzip
,因此如果命令集适用于gzip
,它也适用zstd
。
作为一个小评论,请注意解压端的几个命令标志是多余的:zstd -dvc
就足够了并且工作原理相同,因为-f
和-T6
对于这种情况没有用(尽管幸运的是它们也不会造成伤害)。