ddの出力をssh経由で転送する方法
タグ: linuxssh / 初版公開: 2013-11-26

ddでバックアップを取得する時に、ローカルにファイルを作らずに、リモートホストに結果を直接転送したい場合がある。そのような場合は、以下のようにsshを組み合わせれば、ddの出力をリモートホストに送ることができる。

dd if=/dev/sda | ssh remotehost dd of =/tmp/image

/dev/sdaは出力したいブロックデバイスに、remotehostは転送先のリモートホストに、/tmp/imageはリモートホストの保存先のパスにそれぞれ読み替える。

このコマンドの仕組みは以下のようなものだ。

  1. ddof=を省略すると、標準出力に結果を出力する。
  2. それをsshにパイプで渡す。
  3. sshssh remotehost commandの形で実行すると、リモートホストでコマンドを実行する。この時sshsshへの標準入力を実行するコマンドの標準入力に接続する。
  4. ddof=の場合と同様にif=を省略すると標準入力を入力として動作する。

これで結果としてローカルホストのddの出力がリモートホストのddの入力となるのだ。