Linuxのssh暗号化チャネルを介して、ホストAからBにnetcatを使用してデータを一括でコピーします(dd
を使用してディスクのイメージを再作成)。
両端でどのコマンドを入力する必要がありますか?
ターゲットから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
nc -l 192.168.0.1 9000 > /dev/hdb
Man ncによると、-lオプションは次のとおりです。
-l ncがリモートホストへの接続を開始するのではなく、着信接続をリッスンするように指定するために使用されます。このオプションを-p、-s、または-zオプションと組み合わせて使用するのはerrorです。
netcatは必要ありません。
srcマシンで実行:
dd if=/dev/sdX bs=1M | ssh root@dstMachine " dd of=/dev/sdY bs=1M"
sdXとsdYのどのパーティションもマウントされていないと想定しています。 knoppix または他の同様のライブディストリビューションを使用して、両方のボックスを起動できます。
dd-ifからデータを取得[提供されない場合-stdinから取得]、ofにデータを送信[提供されない場合-データはstdoutに送信されます]。 bs-ブロックサイズ...高速化されます。
ssh-リモートボックスで引用符で囲まれたコマンドを実行します。sshのstdinにポンプで送られるすべてのデータは、リモートマシンにトンネリングされ、そこで実行されるコマンドのstdinとして転送されます。
ホストAはイメージを作成するホスト、ホストBはイメージを保存するホストです。
root@A# dd if=/dev/sda | ssh root@B "dd of=/some/file"
ディスクへの復元は、これら2つを交換するだけです。
または、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つの高速サーバーが使用されました。
Netcatを使用した基本的なコピー ここで説明 。
[〜#〜] ssh [〜#〜]をこれに関与させる必要がある場合は、ポート転送、
-R [bind_address:]port:Host:hostport
しかし、全体として、最初にSSH転送を実行するだけで済みます(netcatなし)。
ファイルシステムが両方ともアンマウントされている限り、ddはうまく機能します。
(from server1) dd if=/dev/sda bs=32k | ssh <server2> dd of=/dev/sda bs=32k
事前にホストキー認証を設定する必要があります。そうしないと、パスワードプロンプトによってコピーが失敗します。
マウントされたボリュームでこれを行うと、結果が悪くなります。
あなたがハンマーを使ってここでナッツを割っているように見えます-または、おそらくより良いアナロジーはハサミであなたの芝生を切ることです:)
社内で行う大きな理由がない限り、このような仕事をするためのツールをいくつか見ることを強くお勧めします。
Trinity Rescue Kit は、マルチキャストを介したイメージングドライブをサポートする無料のliveCDであり、フルボアイメージングシステムに行かなくても、必要に応じて(実際には同じラインで考えている人なら誰でも)実行できます。