web-dev-qa-db-ja.com

btrfsパーティションのバックアップ/クローン

Btrfsパーティションをそのまま(スナップショットツリーをCOWとしてマークすることでスペースを節約するすべての共有構造を含む)別のバックアップにバックアップすることは可能ですかたとえば、btrfsサブボリュームがいくつかあるルートパーティション(/自体のスナップショット)をバックアップしたいとします。

私が考えることができる唯一の方法は、ddのようなブロックコピーツールを使用することですが、パーティションが20%しかいっぱいでなく、定期的にバックアップするつもりなので、これは非効率的です。私はすでにrsyncを使用してすべてを段階的にバックアップしているので、これは別の問題の回避策ではありません。 ddなどのツールを使用せずに、btrfsパーティションのビットごとのクローンが必要です。

たとえば、ext3がダンプおよび復元ユーティリティを提供していることを知っています。それが私が探しているようなものです。

[〜#〜] update [〜#〜]

これは、ライブディスクと同じ方法でバックアップストレージ上のファイルにアクセスできるようにしたい(つまり、バックアップストレージにダンプファイルを保存したくない)という事実を明確にするための更新です。

8
Mansour

partclone は、探しているツールです。

  • bTRFSを含む多くのLinuxファイルシステムをサポートします
  • それは他のいくつかのファイルシステム(FATやexFATなど)もサポートします
  • ddとは異なり、ファイルシステム割り当てマップ(例:FATおよびexFATのFATテーブル、BTRFSエクステントマップなど)を調べ、使用されたブロックのみを複製します。

使用パターンに応じて:

  • ソースとバックアップターゲットの両方の黒いデバイスが同じマシンで表示される場合(基本的に両方のディスクが同じコンピューターに接続されている場合)は、-b(長い:--dev-to-dev)を使用します。
  • または-cおよび-r(長い:--cloneおよび--restore)を使用して、最初にソースマシン上の独自のイメージフォーマットにクローンし、次にバックアップ上のイメージから復元します機械
  • partclone manpage によると、イメージをパイプ処理できるため、スペースが不足しているがネットワークの信頼性が非常に高い場合は、実際のファイルを保存せずにネットワーク経由でパーティションをコピーできるはずです。

この問題を処理するまったく異なる方法は、btrfs sendおよびbtrfs receiveメカニズムを使用することです。

  • これは、ブロックデバイスコピーをセクターに生成しません
  • ただし、両端で参照を正しく提供することにより、また参照リンクされた(一部の)ファイル間の参照を保持できます。

したがって、btrfs自体のメカニズムはsectorの完全なコピー(partcloneとは異なり)ではありませんが、extent完全なコピー(ハードリンクされたファイルのみを処理するrsynv -aSHAXよりもはるかに優れています)。

5
DrYak

まだ試していませんが、btrfs-imageはこの問題を解決しているようです:

https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-image

更新:これをバックアップとして使用しないでください。コメントありがとうございます。

私はこれを開いたままにし、削除しないので、他の人もそれから学ぶことができます。

0
Jonas Stein