Debian リモートコンピュータのディスク全体をローカルコンピュータに追加またはCPする方法は?

Debian リモートコンピュータのディスク全体をローカルコンピュータに追加またはCPする方法は?

この記事を読んだ -ローカルコンピュータでSSHを使用してリモートディスクを追加してローカルディスクに保存する方法

ただし、次のコードは機能しません。

"dd if=/dev/sda | gzip -1 -" | dd of=image.gz

ディレクトリがないからです/dev/sda。私はDebian 7.0を使っているのでこれだとします。

私のvpsの完全なコピーを得るのを助けてくれてありがとう。

答え1

ディスクのデバイス名はディスクの種類によって異なります(より正確には、ディスクが接続されているバスとコントローラの種類とそれを処理するドライバによって異なります)。/dev/sdaPCの最初のディスクの一般的な名前です(たとえば、以前の種類のディスクコントローラや一部のハードウェアRAIDコントローラでは、ドライバによって異なる名前を使用できます)。 VPSでは、ディスクは通常仮想であり、/dev/vdaデバイス名は/dev/xvdadfシステムでブロックデバイス名を使用または検索できますlsblk

ただし、ライブシステムでバックアップを実行するために使用しないでください。!読み取れないバックアップで終わる可能性が高いです。バックアップ中にディスクの内容が変更された場合(ライブシステムでは避けられないことです(たとえば、ログがどこかに書き込まれます))、イメージは少し古くて若干新しいため、一貫性がなく、回復が不可能になる可能性があります。

バックアップを作成する最良の方法はスナップ写真つまり、実際のシステムが変更を継続しても、ファイルシステムのビューは固定され、変更されません。これを行う方法と可能性は、システムの設定方法によって異なります。 btrfsやzfsなど、一部の種類のファイルシステムにはスナップショット機能が組み込まれています。 LVMはボリュームのスナップショットを撮ることもできます。

スナップショットを作成できない場合(または可能であっても)、スナップショットを作成してください。ファイルレベルサポート。変更されたシステムのファイルレベルのバックアップは一貫していませんが、「重要な」変更を行わない場合はバックアップを使用できます。たとえば、ファイルを移動している場合、バックアッププログラムがまだ移動していないディレクトリからすでに移動したディレクトリに移動した場合、そのファイルはバックアップから省略される可能性があります。一方、ログファイルが拡大し続けると、ファイルの中間バージョンが発生しますが、ファイルシステムイメージは破損しません。 1 つのファイルを削除して別のファイルを作成する場合は、そのファイルの 1 つが存在しないか、1 つしかない、または両方が存在しない可能性がありますが、新しいファイルの一部のデータを指す古いファイルのディレクトリエントリはありません。

GNU tar(rootとして)を使用して、重要なメタデータを含むLinuxシステムをバックアップできます。

ssh root@vps 'tar -cJf - --acls --selinux --one-file-system /' >vps.tar.xz

答え2

/dev/sdaSCSIドライバを介して直接ディスクと通信するために使用される規則。コメントでは、ディスクが次の場所にあると言いました/dev/vda。このような命名は、仮想化ソリューションではやや一般的です。推測すると、KVM管理型VPSについて話しているようです。

ディスクをバックアップするには、/dev/vdaslmの提案を使用します。

ssh user@remote "dd if=/dev/vda | gzip -1 -" | dd of=image.gz

これにより、/dev/vdaフルバックアップが作成され、後で十分なスペースがあると仮定してdd別のディスクにコピーすることができます。

fdisk -lうまくいきます。私のデバイスファイルですが、/dev/vda1システム全体が含まれていますか?

あなたはとても早く読んだ。/dev/vda1ディスクのパーティション(断片)です/dev/vda。 3つの点に注意してください。

  • システムがルートパーティションとしてのみ構成されている場合は、/dev/vda1バックアップで/dev/vda1十分です。ドライブ全体(ディスク「ヘッダー」も含む)をバックアップする必要はありません。
  • システムが複数のパーティションにまたがっている場合は、すべてのパーティションをインポートする必要があります/dev/vdaddまたはdd上記のようにディスク全体をインポートする必要があります)。
  • システムは複数のディスクを使用することもできます!このようなことは比較的まれですが、起こり得ると思います。/パーティション(および)を配置し、/varホームディレクトリ()を別のドライブ()に配置できます。/dev/vda/dev/vda1/dev/vda2/home/dev/vdb1/dev/vdb

lsblkあなたの場合は、これがあなたの設定を理解するのに適したツールであると言いたいと思います。実行してMOUNTPOINT列を見てください。システムは、そこに何かがある限り、その行のパーティションを使用します。コンテンツ全体をバックアップするには、次の手順を実行する必要があります。

  • 使用されているすべてのパーティション(/dev/vdXY)をファイルにダウンロードします。パーティションがどこかにマウントされるときに使用されます。
  • 使用されているすべてのディスク(/dev/vbX)をファイルにダウンロードします。ディスクは、使用されているパーティションが1つ以上含まれている場合に使用されます。

つまり、次のことを実行できます。

ssh user@remote "dd if=/dev/vda | gzip -1 -" | dd of=disk1.gz
ssh user@remote "dd if=/dev/vdb | gzip -1 -" | dd of=disk2.gz
# ... and so on, once per used disk.

または(上記の2つのディスク例を使用して):

ssh user@remote "dd if=/dev/vda1 | gzip -1 -" | dd of=root.gz
ssh user@remote "dd if=/dev/vda2 | gzip -1 -" | dd of=var.gz
ssh user@remote "dd if=/dev/vdb1 | gzip -1 -" | dd of=home.gz
# ... and so on, once per used partition.

パーティションを個別にバックアップすることの利点の1つは、必要に応じてローカルで簡単にナビゲートできることです。

$ gzip -d home.gz                        # decompress the backup
$ sudo mkdir /mnt/home_bak               # create a mount point
$ sudo mount -o loop home /mnt/home_bak  # mount the backup
$ cd /mnt/home_bak                       # explore the home backup

最後に、lsblkマウントされたパーティションのみをリストすることを忘れないでください。追加のパーティション(ブート時に自動的にマウントされないパーティション)を設定した場合は、それを含める必要があります。VPSをインストールするときにこれを行ったことを覚えておきます。

関連情報