Linux
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
謝謝。
您根本不需要使用
dd
或管道。</dev/sda gzip >/mnt/sdb1/backups/disk.img.gz </mnt/sdb1/backups/disk.img.gz gunzip >/dev/sda
我曾經做過一個基準測試,發現使用
dd
速度比cat
不同磁碟之間的直接複製要慢。在這種情況下,我希望管道能夠做出任何涉及dd
更慢的解決方案。
管道涉及多一個程序和一個使用者空間副本,因此使用重定向應該更有效。
但我想在當今的硬體和軟體記憶體系統上,它不應該有任何真正的區別。也許您可以使用
bs=4k
or獲得更好的結果bs=64k
,因為它是linux 下管道的限制。有關不同bs參數的更多詳細資訊,請參閱此問題。