ブロックデバイスのコンテンツ転送

ブロックデバイスのコンテンツ転送

バックアップ目的でSSHリンクを介して(複数の)ディスクパーティション全体を転送したいと思います。ソースはブロック特殊デバイスで、ターゲットは通常のファイルでなければなりません。しかし、一般的なツールはそれに適していないようです。

  • scp文句を言うnot a regular file
  • tarターゲット側でデバイスinodeを再生成しようとします。
  • rsync説明するskipping non-regular file

現在の最良のオプションは、ncポート転送を介して、またはcatリモート側でパーティションごとに1回呼び出すことです。これは、公開鍵が設定されていない限り、パーティションごとに1つのパスワード入力を意味します。よりエレガントなソリューションはありますか?

環境は合理的なLinuxライブシステムです。現在、私は Debian でうんざりしていますが、そうする必要はありません。またこれについて具体的に説明してください。

答え1

SSH経由でパイプできます。使用例dd:

dd bs=1M if=/dev/disk | ssh -C target dd bs=1M of=disk.img

転送中にネットワーク接続が中断された場合は、コピーされたコンテンツの量を知ることで転送を再開できます。たとえば、1つ以上のファイルが転送1000MiBされたと確信している場合(ファイルサイズの確認disk.img):

dd bs=1M skip=1000 if=/dev/disk | ssh -C target dd bs=1M seek=1000 of=disk.img

ddこれは単なる例であり、パイプで使用される限り、他のコマンドのように動作します。

答え2

イーサネットリンクを介して転送する場合は、ディストリビューションにバッファがまだない場合は、バッファをインストールします。 ddに似ていますが、より良くて高速です。デフォルトでは、同時読み書きに共有メモリバッファを使用するようにプログラムされています。テープダンプに使用しましたが、転送時間が約10%節約されました。コマンドラインは次のとおりです。

  buffer -i /dev/disk -m 100m | ssh -C target buffer -o disk.image -m 100m

より多くのオプションが利用可能で、デフォルトのブロックサイズは10Kです。上記は100MBytesの共有メモリを割り当てるため、これを許可するにはこのパラメータまたは設定を調整する必要があります。

警告:この方法でアクティブパーティションを転送できません。そのため、転送するパーティションがマウントされていないことを確認してください。

関連情報