web-dev-qa-db-ja.com

リモートサーバーへの正確なスナップショットと増分バックアップの実行

中央バックアップサーバーに(rsh/SSH経由で)バックアップしたいUbuntu(および場合によってはRHEL)サーバーがいくつかあります。スナップショットと増分バックアップの両方を実行したいと思います。目標は、バックアップされたサーバーの1つが突然停止した場合に、bootstrapイメージをインストールし、バックアップから復元して、理想的にはその後すぐに稼働できるようにすることです。

これらのサーバーには、一意のユーザーとグループ、および同じ名前のいくつかの異なるgidとuidがあります。私はrsyncを検討していました(ローカルバックアップは正常に機能し、xattrとACLもバックアップできるようにきめ細かい制御ができます)が、リモートサーバーへのrsyncではこれらのニュアンスが期待どおりに保持されない可能性があることに気付きました。

それで、これを達成するためのより良い方法は何ですか?この目的で一般的に使用されるパッケージはありますか?

7
MartyMacGyver

編集:ありがとうございました!私は今、仕事をするための他のいくつかのパッケージを知っています、そして私はrsync内部についてもっとたくさん知っています。これも不思議に思うかもしれませんが、-numeric_idsオプションを指定して別のマシンにrsyncすると、UID/GIDをマップまたは作成しようとせず、そのまま渡します。バックアップディレクトリ内のアイテムの所有権は奇妙に見えるかもしれませんが、復元時には1:1に一致します(新しいマシンに復元する場合、復元するものの一部に元のマッピングファイルが含まれると想定しています)。

これが私が現在完全なシステムバックアップに使用しているオプションの完全なリストです(Sudo経由のrootとして) {{my_exclusions}}は読者のための演習であることに注意してください(私はまだいくつか持っていますそれを正常に機能させるのに問題があります)。また、-link-dest ...の使用にも注意してください。そのディレクトリがターゲットに存在する場合、現在のバックアップで変更されていない、以前のバックアップにすでに存在するファイルへのハードリンクが作成されます。

rsync \
  --recursive \
  --links \
  --hard-links \
  --perms \
  --acls \
  --xattrs \
  --owner \
  --group \
  --devices \
  --specials \
  --times \
  --one-file-system \
  --partial \
  --numeric-ids \
  --compress \
  --delete-during \
  --stats \
  --human-readable \
  --progress \
  --verbose \
  --super \
  --log-file=/tmp/my.log \
  --link-dest=/backup/latest_backup \
  --exclude={{my_exclusions}} \
  --link-dest=/backup/latest \
  / \
  {{remote_hostname_or_ip}}:/backup/new_backup
3
MartyMacGyver

はいrsyncには、ACL、拡張属性、ext2属性、ハードリンク、数値ユーザーID、まばらさを保持するオプションがあります。

以前は、ファイルシステムをbtrfsファイルシステムを備えたバックアップサーバーに同期するシステムがあり(バックアップサーバーでスナップショットを作成するため)、安定性の問題のため、zfs-on-linuxに移動しました(残念ながら、 POSIX ACLはまだサポートされていませんが、回避策があります)。

興味のあるrsyncオプション:--archive --one-file-system --xattrs --hard-links --delete --numeric-ids --sparse --aclsおよび場合によってはインプレース同期用のオプション。

Rsyncが行わないことの1つは、名前の変更を検出することです(ただし、そのためのパッチはありますが、どれだけ信頼できるかはわかりません。ファイルの名前変更のみを検出します)。

zfsにはzfs sendがあり、特定のスナップショット以降に行われた変更のみを送信します(zfs receiveを使用して別のzfszpoolに)。私が正しく理解していれば、その機能はごく最近btrfsにも追加されました。したがって、最新のカーネルでbtrfs FSを別のbtrfs FSにバックアップする場合、それはオプションになる可能性があります。

4

rsnapshot を見てください。これは、rsyncコマンドラインユーティリティのPerlラッパーです。 Rsnapshotは、増分バックアップを容易にする追加の構成レイヤーをrsyncに追加します。 (ファイルの古いバージョンは、変更されていない場合、現在のバージョンにハードリンクされます。したがって、バックアップされたファイルシステムの各増分バージョンは完全なコピーのように見えます。)

別の同様の可能性は duplicity であり、代わりにlibrsyncに基づいています。これはより洗練されたUIを持っていることを理解していますが、私はそれを使用していません。または rdiff-backup 、これは同じ開発者からのものだと思いますが、いずれにしてもかつては真実でした。

もちろん、バックアップシステムはたくさんあります。これが リスト FreeBSDで利用可能なものの1つであり、そのほとんどはLinuxでも利用可能です。しかし、私が上で述べた3つは、rsyncに慣れている場合に考慮すべき自然なものだと思います。 (素晴らしいツールです。)

4
dubiousjim