dd
でバックアップを取得する時に、ローカルにファイルを作らずに、リモートホストに結果を直接転送したい場合がある。そのような場合は、以下のようにsshを組み合わせれば、ddの出力をリモートホストに送ることができる。
dd if=/dev/sda | ssh remotehost dd of =/tmp/image
/dev/sda
は出力したいブロックデバイスに、remotehost
は転送先のリモートホストに、/tmp/image
はリモートホストの保存先のパスにそれぞれ読み替える。
このコマンドの仕組みは以下のようなものだ。
-
dd
はof=
を省略すると、標準出力に結果を出力する。 - それを
ssh
にパイプで渡す。 -
ssh
はssh remotehost command
の形で実行すると、リモートホストでコマンドを実行する。この時ssh
はssh
への標準入力を実行するコマンドの標準入力に接続する。 -
dd
はof=
の場合と同様にif=
を省略すると標準入力を入力として動作する。
これで結果としてローカルホストのdd
の出力がリモートホストのdd
の入力となるのだ。