増分コピーとは何か — 原理・種類・実装・運用のポイントを徹底解説(増分バックアップ/差分/rsync/スナップショット)

増分コピーの概要

増分コピー(増分バックアップ、incremental copy/backup)は、前回のコピー以降に変更があったデータだけを抽出して転送・保存する手法です。フルコピーに比べて転送量や保存容量、処理時間を削減できるため、バックアップ、レプリケーション、データ移行などで広く利用されています。ただし設計次第で復元手順が複雑になったり、整合性やチェーン破損リスクが増大したりするため、仕組みの理解と運用ルールが重要です。

基本概念と種類

  • ファイルレベル増分 — ファイルの最終更新時刻やハッシュを比較し、変更があったファイル単位で転送します。軽量だが小さな変更があってもファイル全体を転送する点に注意。
  • ブロック/チャンクレベル増分 — ファイルを固定長または可変長チャンクに分割して差分を抽出。大きなファイルの一部変更を効率的に扱えます(例:rsyncアルゴリズム、xdelta、zsync)。
  • 差分バックアップ(differential) — 最後のフルバックアップ以降に変更された全てを保存。復元はフル+差分で済むが、差分が大きくなりやすい。
  • 増分バックアップ(incremental) — 直前のバックアップ以降に変更された部分のみを保存。転送量は小さいが復元はフル+各増分を順に適用する必要がある。
  • スナップショットベースの増分 — ストレージのスナップショット差分(ブロック差分)を利用。多くのクラウドやモダンファイルシステム(ZFS、btrfs、EBSスナップショットなど)がサポート。
  • ログ/トランザクションベース(CDC) — DBのトランザクションログ(WAL、binlog、redo)を用いて変更データを転送・再生。ポイントインタイム復旧(PITR)やレプリケーションで使われる。

差分検出アルゴリズム

差分検出は増分コピーの心臓部です。代表的な手法には以下があります。

  • タイムスタンプとメタデータ比較 — もっとも簡便だが、タイムスタンプの同期問題やメタデータ変更のみで誤検出する可能性。
  • ハッシュ比較(ファイル/チャンクごと) — 完全性が高いが計算コスト(CPU)が大きい。
  • ローリングチェックサム(rsyncアルゴリズム) — 既存のブロックを効率的に比較し、差分ブロックを検出。ネットワーク効率が良い。
  • トランザクションログの解析(CDC) — データベースやメッセージングの変更のみを正確に抽出。アプリケーションレベルの整合性管理が必要。

一般的な実装例とツール

  • rsync/rdiff/rsyncアルゴリズム — ファイルやディレクトリの同期で定番。ローリングチェックサムで差分転送。
  • ZFS/Btrfs send/receive — スナップショット差分をブロックレベルで送信。効率的で整合性が高い。
  • クラウドスナップショット(AWS EBS、Azure Managed Disks) — 基底はブロック差分。初回はフルだが以降は増分的に保存される実装が多い。
  • バックアップソフト(Veeam、NetBackup、Borg、Restic、Duplicityなど) — 増分+重複排除や圧縮、暗号化を組み合わせた実用ソリューション。
  • データベースの仕組み(PostgreSQLのWAL、MySQLのbinlog、OracleのRedo/RMAN) — トランザクション単位で変更を記録し、増分復旧やレプリケーションに利用。

復元プロセスと考慮点

増分方式の復元は、一般に「ベースフルバックアップ+増分を順に適用」します。差分バックアップなら最終差分のみで復元可能ですが、増分バックアップはチェーンが長くなると復元時間が増え、チェーンの一部が破損すると復元不能になるリスクがあります。

このため実運用では「定期的なフルバックアップ」や「合成フル(Synthetic Full)」「増分の統合(consolidation)」が採用されます。また、復元時の整合性確認(チェックサム検証、アプリケーションレベルのリストアテスト)を自動化しておくことが重要です。

性能・資源に関する評価指標

  • RPO(Recovery Point Objective)とRTO(Recovery Time Objective) — 増分はRPOを短縮するのに有効だが、RTOは増分チェーン長で悪化することがある。
  • ネットワーク帯域とI/O — 増分は帯域節約に有効だが差分検出やハッシュ計算がCPUやI/Oを消費する。
  • 保存容量と重複排除 — 増分は短期的な容量を節約できるが、重複排除や圧縮との組み合わせで効果が大きく変わる。

整合性・一貫性の確保

増分コピーで最も厄介なのはデータの一貫性です。特にデータベースやトランザクションのあるアプリケーションでは、単にファイル単位で増分を取るだけでは整合性が保てない場合があります。対策としては:

  • アプリケーションのクオiesンス(quiesce)や一時停止を行ってスナップショットを取得する(例:Windows VSS)。
  • トランザクションログ(WAL/binlog)を組み合わせてPITRを行う。
  • アプリケーションレベルでの整合性チェックとリストアテストを自動的に実施する。

運用上のベストプラクティス

  • 初回は確実なフルバックアップを取得し、その後増分/差分で運用する。
  • 定期的にフルバックアップまたは合成フルを作成し、チェーン長を制限する。
  • 保存先の耐久性と整合性(チェックサム、バージョン管理、WORM/不変ストレージ)を確認する。
  • 暗号化・アクセス制御を徹底して機密データを保護する。
  • 復元手順を文書化し、定期的にリストア演習を行う(実際のRTO測定を含む)。
  • モニタリングとアラートでバックアップ失敗やチェーン破損を早期検知する。

よくある誤解と落とし穴

  • 「増分だから安全」は誤り。増分チェーンの一部破損で復元不能になる可能性がある。
  • タイムスタンプだけで判断すると、NTP問題やファイル移動で差分を取り逃すことがある。
  • 増分転送がネットワークを圧迫しないわけではない。差分検出のためのメタ情報転送やハッシュ計算が必要。
  • クラウドスナップショットの「増分保存」はベンダー実装に依存する。運用者は保存ポリシーと料金モデルを理解すること。

ユースケース別の選び方

  • 大量の大ファイルを頻繁に更新する場合 — ブロックレベルの差分(rsyncやZFS send)を推奨。
  • 多くの小さなファイルやバイナリ差分の最適化が必要な場合 — 重複除外+増分ツール(Borg、Restic)を推奨。
  • データベースやトランザクションシステム — ログベースの増分(WAL/binlog)+整合性手順。
  • クラウド環境のバックアップ — 単位(EBSスナップショット、S3オブジェクト)と料金、復元速度を考慮。

実際の導入チェックリスト

  • 保護対象データの分類(重要度、復旧優先度)
  • 必要RPO/RTOの定義
  • 初回フルと増分のスケジュール設計(例:週次フル+日次増分)
  • チェーン長上限と合成フルポリシー
  • 整合性検証(チェックサム、アプリケーション整合性)
  • 暗号化・権限・監査ログの実装
  • 復元手順の自動化と定期的なリストア演習

まとめ

増分コピーは転送量や容量を最小化できる強力な手法ですが、実運用では復元性・整合性・運用性を重視した設計が不可欠です。差分検出の粒度(ファイル/チャンク/ブロック/トランザクション)やスナップショットの有無、合成フルの運用、チェーン管理、暗号化・検証までを含めた運用設計を行えば、コスト効率と可用性の高いバックアップ/同期基盤を構築できます。

参考文献