web-dev-qa-db-ja.com

ddをpvにリダイレクトする方法は?

これは私が変更する必要がある私のddコマンドです:

dd if=/tmp/nfs/image.dd of=/dev/sda bs=16k

ここで、pvを使用して、NFSサーバーからのコピー速度を制限したいと思います。どうすればそれを達成できますか?そんなこと知ってる --rate-limitは仕事をしますが、パイプの作り方がわかりません。

1
Pablo

何らかの理由で必須ブロックサイズ16Kを使用してブロックデバイスを読み取る場合:

dd if=/mnt/nfs bs=16k | pv -L <rate> > /dev/sda

どこ <rate>は、転送される1秒あたりの最大許容バイト数、またはK、M、G、[...]が指定されています。

ただし、16Kのブロックサイズを使用してファイルを実際に読み取る必要がない場合は、pvを使用するだけで、ブロックデバイスを読み取ることができます。

pv -L <rate> /mnt/nfs > /dev/sda
2
kos

ここではddは必要ありません。 pvは、入力を出力にシャベルする仕事をすでに行っています。

pv -L 1m </tmp/nfs >/dev/sda

一部のWebページで読んだことがあるかもしれませんが、ddには魔法はありません。デバイスにアクセスするために使用する必要はありません。すべての魔法は/dev/stuffにあります。

注:このコマンドは、/tmp/nfsがディスクイメージであり、それをディスク/dev/sdaに書き込みたい場合に意味があります。レート制限を除けば、質問のコマンドと同等です。 NFSサーバーが関与していないようです。