![如何使用单个命令解压缩磁盘映像并将其添加到 SD 卡?](https://linux22.com/image/71894/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E5%8D%95%E4%B8%AA%E5%91%BD%E4%BB%A4%E8%A7%A3%E5%8E%8B%E7%BC%A9%E7%A3%81%E7%9B%98%E6%98%A0%E5%83%8F%E5%B9%B6%E5%B0%86%E5%85%B6%E6%B7%BB%E5%8A%A0%E5%88%B0%20SD%20%E5%8D%A1%EF%BC%9F.png)
我受到以下限制:
- 我的计算机上有一个 1.0 GB 的
.zip
文件,其中包含一个文件,即raspbian
.解压后,该文件大小为 3.2 GB,名为2015-11-21-raspbian-jessie.img
. - 下载 zip 文件后,我的计算机上的存储空间不足 1.0 GB,没有足够的空间将图像提取到我的计算机上。
- 该文件需要解压缩并使用普通的旧 .txt 文件写入 SD 卡
dd
。
在这些限制下我可以将图像写入SD卡吗?
我知道可以通过管道传输数据tar
,然后将该数据传输到其他地方,但是,这仍然适用于zip
文件格式,还是需要在访问任何文件之前解压缩整个存档?
答案1
使用unzip -p
:
unzip -p 2015-11-21-raspbian-jessie.zip 2015-11-21-raspbian-jessie.img | dd of=/dev/sdb bs=1M
-p
将文件提取到标准输出
答案2
经过一番与前一个解决方案的斗争之后:
unzip -p ~/Downloads/2020-02-05-raspbian-buster-lite.zip | sudo dd of=/dev/disk2 bs=1m
或者,如果您想查看进度并且您已安装pv
:
unzip -p ~/Downloads/2020-02-05-raspbian-buster-lite.zip | pv | sudo dd of=/dev/disk2 bs=1m
答案3
为了方便起见,我通常使用unzip -p 2015-11-21-raspbian-jessie.zip >/dev/sdb
or 。zcat 2015-11-21-raspbian-jessie.gz >/dev/sdb
这是因为在进行大数据传输时,我们期望操作系统自动调整块大小(根据源块大小、目标块大小、内存可用性等)以获得最佳性能,结果证明它们的工作速度比dd if= of= bs=
(也许因为我没有暴力尝试所有可能的块大小选择dd
)^_^