@
cabbage 以前不推荐用 cat 的原因就是你不知道用的什么 block size,也不知道有没有额外的 padding。额外的 padding 可能影响后面的数据。dd 的 block size 就很确定。
你这样压缩其实压缩不了多少,因为空闲空间不填零,可压缩性很差。要压缩的话先用 zerofree 填充空闲空间。没有 zerofree 的话手动创建一个大文件写满零再删除也行。
然后压缩不建议 gzip,除非是走公网。gzip 压缩率高但 CPU 密集。建议 lzo 随便压一下其实已经够了。特别是经过写零预处理的话。
另外你的命令里 cat 是多余的
gzip -c </dev/sda >/media/USBDrive/sda1.ing.gz
gzip -dc <xx.img.gz >/dev/sda
tar 能加速拷贝是因为 cp 每个文件会 sync 一次,对小文件就很蛋疼。两个 tar 之间用 pipe 连接,pipe 有 buffer 的,而且两个进程各自不 block
tar -c ./ | tar -C /dst/ -xv 不需要压缩。因为内存带宽足够。压缩反而慢。