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の入力となるのだ。
