回答:
ターゲットがsshdを実行しているソースからターゲットへのコピー:
dd if=/dev/sda | gzip | ssh root@target 'gzip -d | dd of=/dev/sda'
ターゲットがsshdを実行していないときに、sshd_hostを介してソースからターゲットにコピーする。
nc -l -p 62222 | dd of=/dev/sda bs=$((16 * 1024 * 1024))
ssh -L 62222:target:62222 sshd_host &
ソース: dd if=/dev/sda | nc -w 3 localhost 62222
dd - if =はソース、of =は宛先、bs =はブロックサイズです。ブロックサイズが異なるとパフォーマンスが向上する場合があります。16は通常、かなり合理的な出発点です。count =を使用して、コピーするブロック数を示すこともできます。
nc -- pは、サービスに使用するポートを示します。 -lは、サービスを開始するために使用されます。 -wは、終了する前にピップラインのデータを待機する時間を設定します。
ssh -- Lは、リモートホストにトンネルをセットアップします。引数の形式は、local_port:target_host:target_port
です。ローカルプログラム(nc)はlocal_portに接続します。この接続はトンネルされ、target_hostのtarget_portに接続されます。
定義されたオプションは、これに使用されるものにすぎません。詳細については、manページをご覧ください。
いくつかのメモ:
source machine dd -> nc -> ssh -> ssh tunnel -> sshd server -> nc on target -> dd
sshなしでnetcatを使用する場合。私はそれが最も速い方法であり、安全な方法ではないと推測します、あなたはこのようにディスク全体をコピーして復元することができます:
IP 192.168.0.1のコンピュータAで
cat /dev/hdb | nc -p 9000
コンピューターB
nc -l 192.168.0.1 9000 > /dev/hdb
man ncによると、-lオプションは次のとおりです。
-l ncがリモートホストへの接続を開始するのではなく、着信接続をリッスンするように指定するために使用します。このオプションを-p、-s、または-zオプションと組み合わせて使用するとエラーになります。
netcatは必要ありません。
srcマシンで実行:
dd if=/dev/sdX bs=1M | ssh root@dstMachine " dd of=/dev/sdY bs=1M"
私はsdXとsdYのパーティションがどれもマウントされていないと仮定します。knoppixまたは他の同様のライブディストリビューションで両方のボックスを起動できます。
DD -からデータを取得する場合 - 、[設けられていない場合は標準入力からそれを取る]にデータを送信する [設けられていない場合は-データは標準出力に送られます]。bs-ブロックサイズ...は速度を上げます。
ssh-リモートボックスで引用符で囲まれたコマンドを実行します。sshのstdinに送信されたすべてのデータはリモートマシンにトンネリングされ、そこで実行されるコマンドにstdinとして提供されます。
netcatの基本的なコピーについては、ここで説明します。
これにSSHを関与させる必要がある場合は、その上でポート転送を使用できます。
-R [bind_address:]port:host:hostport
しかし、全体的には、最初にSSH転送を実行するだけで済みます(netcatなし)。
または、clonezillaを使用して、sshfsを介してリモートストレージを「マウント」できます。
上記のオプションを組み合わせてみましたが、結果を共有しています。ddブロックサイズ、gzipおよびgzip圧縮アルゴリズムの組み合わせを使用して、最速から最速まで。
ご覧のとおり、gzipは1Mブロックサイズと組み合わせて高速アルゴリズムを使用した場合にのみ改善されました。
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | gzip --fast | ssh hyp5 'gzip -d | dd bs=1M of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 326.045 s, 39.5 MB/s
time dd if=/dev/HypGroup00/stage-snapshot | gzip --fast | ssh hyp5 'gzip -d | dd of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 370.158 s, 34.8 MB/s
time dd if=/dev/HypGroup00/stage-snapshot | ssh hyp5 dd of=/dev/HypGroup00/stage
12884901888 bytes (13 GB) copied, 370.274 s, 34.8 MB/s
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | ssh hyp5 dd bs=1M of=/dev/HypGroup00/stage
12884901888 bytes (13 GB) copied, 372.906 s, 34.6 MB/s
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | gzip | ssh hyp5 'gzip -d | dd bs=1M of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 520.116 s, 24.8 MB/s
LVM経由でローカルディスクを使用するEnterprise GigEスイッチ経由でGigEに接続された2つの高速サーバーが使用されました。
あなたはここでナットを割るためにハンマーを使用しているように見えます-またはおそらくより良い例えはハサミで芝生を切ることです:)
社内でそれを行う大きな理由がない限り、このような仕事をするためのツールのいくつかを見てみることを強くお勧めします。
Trinity Rescue Kitは、マルチキャスト経由のイメージングドライブをサポートする無料のliveCDであり、フルボアのイメージングシステムを使用せずに、必要に応じて(または実際に他の人が同じラインで考えている)実行できます。