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

パイプラインには、1つ以上のプロセスと1つ以上のユーザースペースのコピーが含まれているためしなければならないリダイレクトをより効率的に使用してください。

しかし、今日のハードウェアとソフトウェアのキャッシュシステムでは、これは実質的な違いを持っ​​てはいけないと思います。多分またはそのままbs=4k使用すると、より良い結果が得られます。bs=64kパイプライン制限Linuxで。バラよりこの問題様々な内容の詳細無意味な言葉パラメータ。

答え3

より簡単です:

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

関連情報