Command-Line
壓縮和解壓縮 dd 圖像 - zstd 而不是 gzip
早些時候我使用 fsarchiver 創建壓縮分區映像。由於一些奇怪的行為,我選擇將其替換為
dd
.但是,我喜歡 fsarchiver 如何使用 zstd 進行壓縮。
於是,我研究了,
這些本質上說的是,我必須使用以下命令進行備份
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
嘗試這些命令是否安全,還是我做錯了什麼?
像這樣使用
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
,前綴dd
withsudo
或 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
- 用
pv
而不是dd
. 使用sudo pv
或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 時的語法