我有一个磁盘映像的tar存档。该tar文件中的图片大小约为4GB。我将的输出传递tar xf
到,dd
以将磁盘映像写入SD卡。直到存储卡已满,磁盘转储才会停止。这是我的shell会话:
$ ls -l disk.img.tgz
-rw-r--r-- 1 confus confus 192M Okt 5 00:53
$ tar -tvf disk.img.tgz
-rw-r--r-- root/root 4294968320 2018-10-05 00:52 disk.img
$ lsblk -lb /dev/sdc
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdc 8:32 1 16022241280 0 disk
$ tar zxf disk.img.tgz -O | sudo dd status=progress conv=sync bs=1M of=/dev/sdc
[sudo] password for user:
15992881152 bytes (16 GB, 15 GiB) copied, 212 s, 75,4 MB/s
dd: error writing '/dev/sdc': No space left on device
0+15281 records in
15280+0 records out
16022241280 bytes (16 GB, 15 GiB) copied, 217,67 s, 73,6 MB/s
为什么?在将4GB映像写入16GB购物车后,它应该停止并且永远不会用完空间!
你为什么有
—
拉尔夫·朗奎斯特(RalphRönnquist),
conv=sync
?您是想使用conv=fsync
吗?
您确定这是文件的真实大小吗?我知道gzip只有32位用于存储文件大小,因此它将4GB以上的文件大小弄错了。我不确定tar是否有类似的限制。
—
戴维·康拉德
dd
并将其写入另一个文件?tar zxf disk.img.tgz -O | dd status=progress conv=sync bs=1M of=/path/to/some/file/on/disk
?如果是这样,您是否可以获得原始文件的精确副本?