現行のサーバーのバックアップ用にもう一台同じ仕様のサーバーを作っている時、ネットワーク越しにDDコマンドが使えるか探すとここに回答があった。
考え方は dd コマンドの出力側と受け側に分け、間を nc コマンドでつなぐ見たいになっている。
まずは現行のサーバーの方で
# dd if=/dev/Kvm/web4 | nc 192.168.XX.XX 12345
if=の後ろは例によって領域(device)の指定。私はLVMでサブホストのルート領域を作っているのでこんな風になっている。普通なら /dev/sda1 とかかな
パイプ(|)の後は nc コマンド(netcat)の略らしい。その後のIPアドレスはバックアップ用のサーバーのIPアドレス、次の数字が使用するポート番号
ーーーーーーーーーーーーーーーーーーー
バックアップ用サーバーに移って
# nc -l 12345 | dd of=/dev/Kvm/web5
-l で nc をリッスンモードにし、同じポート番号にして、パイプの後は dd コマンドの後ろの設定
同じホスト間での dd だったら、上記は dd if=/dev/Kvm/web4 of=/dev/Kvm/web5 となるが、これを出力側(if)と受け側(of)に分けている。
ネットワークはギガビットだが思ったより早く終了した。多分同じホスト間より早いくらい。
これには理由がある。私はサブホストのルート領域、データー部分などを1台のSSDの押し込めているので(サーバーを小さく作りたい)出力側も受け側も同じディスクを指定する事になるからだと思う。
おまけ:いつも忘れる、ddの進捗状況を表示する を忘れるので
新しくターミナルを開いて
# watch -n 60 pkill -USR1 dd
とすると、60秒毎に何メガコピーしたか表示される。
追記:重要
CentOS7でやったらエラーが出る
Ncat: Connection refused.
google先生に聞いても中々回答がない、ふとリッスンを先にしたら難無く繋がった
つまり、受け側(# nc -l 12345 | dd of=/dev/Kvm/web5)を先にやってから
送り側(# dd if=/dev/Kvm/web4 | nc 192.168.XX.XX 12345 )ということ
うーん、CentOS 7だからかNcatのバージョウンが変わったか、それとも私の勘違いで最初からだったのか???