gzip - 重定向或管道?

gzip - 重定向或管道?

我将使用 dd 将一个大的 (750GB) 磁盘备份到外部 USB 磁盘。
我应该使用重定向还是管道?哪个更有效率?或者有什么区别吗?

另外,最佳的块大小是多少? USB 可能是这里的瓶颈。

dd if=/dev/sda bs=1M | gzip -c > /mnt/sdb1/backups/disk.img.gz

gzip -dc /mnt/sdb1/backups/disk.img.gz | dd of=/dev/sda bs=1M

dd if=/dev/sda bs=1M | gzip -c | dd of=/mnt/sdb1/backups/disk.img.gz

dd if=/mnt/sdb1/backups/disk.img.gz | gzip -dc | dd of=/dev/sda bs=1M

谢谢。

答案1

dd您根本不需要使用或管道。

</dev/sda gzip >/mnt/sdb1/backups/disk.img.gz
</mnt/sdb1/backups/disk.img.gz gunzip >/dev/sda

我曾经树立了标杆并发现使用dd速度比cat不同磁盘之间的直接复制慢。在这种情况下,我希望管道能够做出任何涉及dd甚至更慢的解决方案。

答案2

管道涉及多一个进程和多一个用户空间副本,因此它应该更有效地使用重定向。

但我想在当今的硬件和软件缓存系统上,它应该不会产生任何真正的区别。也许您可以使用bs=4kor获得更好的结果bs=64k,因为它是管道极限在Linux下。看这个问题有关不同的更多详细信息废话参数。

答案3

更简单:

gzip -c /dev/sda > disk.img.gz
gzip -dc /mnt/sdb1/backups/disk.img.gz > /dev/sda 

相关内容