web-dev-qa-db-ja.com

実行中のシステムをバックアップする方法は?

Linuxシステムを実行していますが、ddを使用して完全バックアップを作成したいと思います。これは、私の限られた知識では、すべてのシステムが持つ唯一のツールです。

異なるフレーバーがインストールされているいくつかの異なるサーバーにこのアプローチを適用する必要があり、これらのサーバーに新しいソフトウェアをインストールできないため、ディストリビューションは主に重要ではありません。

そのようなタスクを完了するための最も一般的で効率的な方法は何ですか?

4
ludiegu

tar/cpio/rsyncなどを使用する場合に検討するのに役立つ可能性のあるアドバイスのいくつかのナゲットほどの解決策ではありません。まず、次のことを行うことをお勧めします。ソースファイルシステムのバインドマウントからのバックアップ(mount --bind source mntdir)。これは、rsyncおよびtarおよび--one-file-systemfind-xdevオプションと同様の効果があります。これらのオプションが利用できない場合(おそらく古いバージョンが原因ですが、バインドマウントはLinux 2.4で導入されたことに注意してください)に機能し、マウントポイントの下のファイルをバックアップできるという利点があります。これは場合によっては望ましいことです。

次に、可能な場合は数値のuidとgidを使用することをお勧めします(tarの場合は--numeric-ownerrsyncの場合は--numeric-idscpioの場合は--numeric-uid-gid)。これなしでバックアップを復元し、所有者/グループが存在しないか、uid/gidが異なる場合(これは、特にライブディスクを使用してバックアップを復元する場合に発生する可能性があります)、次の場合に1セットのuid/gidを使用できます。 /etc/passwd/etc/groupが復元された後に無効になる復元。

また、 clonezilla もご覧ください。バックアップの大部分を実行するために使用する方法は役に立たない場合がありますが、実行時にブートセクター/パーティションテーブルをバックアップするオプションがあり、MBRとGPTの両方をサポートするため、いくつかのスクリプトが存在する可能性があります。あなたの目的にコピー/適応。

最後の2セントとして、私はrsyncがこれを行うための標準的な方法であると考えます。増分バックアップを実行する場合は確かに最も効率的な方法ですが、1回限りの完全バックアップではそれほど効率的ではありません。確かに、それはユビキタスではありませんが、ディストリビューションのサーバー版に含めないのは間違いだと思います。すでにすべてのサーバーにインストールされている可能性があります。

2
Graeme

ddを使用すると、ファイルシステムが異なる順序でブロックを更新しているときにデバイスからブロックレベルでデータを読み取るため、後で復元するときに問題が発生する可能性があります。これにより、復元されたデバイスでファイルシステムエラーが発生します。また、ブロックデバイスに復元する(またはイメージをループマウントする)必要があるため、復元の柔軟性はそれほど高くありません。

OSレベルでスナップショットをサポートしていない実行中のシステムをバックアップする場合は常に問題がありますが、cpioを使用しても問題は少なくなりました(tarの使用も同じです)。不完全なファイルや互いに同期していないファイルが存在する可能性がありますが、基盤となるファイルシステム自体にはエラーはありません。 ddのもう1つの代替手段は、rsyncがある場合です。別のドライブ/サーバーへのスナップショットのようなものを作成します。 findcpioを使用すると、タイムスタンプファイルを生成し、タイムスタンプ後に変更されたファイルで2回目の実行を行うのが簡単です(これは元のファイルよりもはるかに高速に実行され、ファイルが出力される可能性が低くなります- of-相互に同期)、rsyncを再実行しても同じことができます。cpiorsyncもブートセクタなどを処理しません。個別に処理する必要があります。 ddは、ddの実行中にほとんど変更されないため、これに適しています。

完全に復元可能なセットアップのために、パーティション(_fdisk -l_または_parted -l_)のダンプ、ブートセクターのコピー、パーティションごとのファイルシステムタイプのリスト、およびcpioで生成された_.tar_パーティションの内容のファイル(すべてCD/DVDに書き込まれます)。復元とは、Life CDからの起動、ブートセクターの復元、ドライブのパーティション分割、パーティションのフォーマット、およびtarからのパーティションの復元を意味します。 (さまざまな_.tar_ファイルの復元後にgrubをインストールすることにより、ブートセクターの復元なしでそれを行うことができるはずです)

1
Timo