Linux

gzip - 重定向或管道?

  • August 9, 2018

我將使用 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

謝謝。

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

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

我曾經做過一個基準測試,發現使用dd速度比cat不同磁碟之間的直接複製要慢。在這種情況下,我希望管道能夠做出任何涉及dd更慢的解決方案。

管道涉及多一個程序和一個使用者空間副本,因此使用重定向應該更有效。

但我想在當今的硬體和軟體記憶體系統上,它不應該有任何真正的區別。也許您可以使用bs=4kor獲得更好的結果bs=64k,因為它是linux 下管道的限制。有關不同bs參數的更多詳細資訊,請參閱此問題。

引用自:https://unix.stackexchange.com/questions/34003