tabimoba.net

とあるエンジニアの雑記帳

Linuxで差分バックアップはrdiff-backupが手軽でおすすめ

rdiff-backupを使うと、非常に手軽にLinux差分バックアップを行うことができます。

rsyncで日頃の完全なバックアップを用意しつつ、日次の差分バックアップはrdiff-backupを併用すると、安心したバックアップ環境が構築できます。

インストール

CentOS/RHELの場合は、EPELリポジトリよりyumでインストールが可能です。
または、以下よりRPMをダウンロードしてインストールも可能です。

バックアップ方法

ローカルバックアップ
  • バックアップ元ディレクトリ:/data_dir
  • バックアップ先ディレクトリ:/backup_dir

# rdiff-backup /data_dir /backup_dir

バックアップ結果を最後に表示させたい場合は、

# rdiff-backup --print /data_dir /backup_dir

とする。

バックアップから特定のファイルやディレクトリを除外したい場合は、

# rdiff-backup --exclude '除外したいファイル or ディレクトリ' /data_dir /backup_dir

とする。

リモートバックアップ(対向先にもrdiff-backupがインストールされていること)

バックアップ元(ローカル)→バックアップ先(リモート)の場合

  • バックアップ元ディレクトリ:/data_dir
  • バックアップ先ディレクトリ:/backup_dir
  • 接続先ホスト(IPアドレス):192.168.0.1
  • 接続先ユーザー名:backuser

# rdiff-backup /data_dir backuser@192.168.0.1::/backup_dir

バックアップ履歴の確認

# rdiff-backup -l backup_rdiff-backup

Found 2 increments:
increments.2014-06-07T05:00:17+09:00.dir Sat Jun 7 05:00:17 2014
increments.2014-06-08T05:00:17+09:00.dir Sun Jun 8 05:00:17 2014
Current mirror: Mon Jun 9 05:00:11 2014

(逆)差分ごとのファイルサイズの確認

# rdiff-backup --list-increment-sizes backup_rdiff-backup

Time Size Cumulative size

                                                                                                                                                        • -

Mon Jun 9 05:00:11 2014 11.0 GB 11.0 GB (current mirror)
Sun Jun 8 05:00:17 2014 1.36 MB 11.0 GB
Sat Jun 7 05:00:17 2014 12.6 MB 11.0 GB

復元方法

2014/6/7 5:00:17にバックアップされた内容を復元したい場合

  • バックアップディレクトリ:/backup_rdiff-backup
  • 復元先ディレクトリ:/restore_dir

# rdiff-backup -r 2014-06-07T05:00:17+09:00 /backup_rdiff-backup /restore_dir

差分バックアップは完全バックアップほどディスク容量を必要としませんので、毎日のバックアップに最適です。完全バックアップでは10GBのバックアップを10日分行うには10GB×10=100GBの容量を必要としますが、差分バックアップでは全ファイルがごそっと入れ替わるような特別なことがどこかで無い限りそこまでの容量を必要としません。

また、完全バックアップでは実現が難しい長期にわたる日数のバックアップを手軽に残せる点でメリットがあります。欠点は、履歴のどこかが破損すると復元しにくくなる場合があることですが、このような事態を想定して、リスクヘッジとして完全バックアップ過去1~2日分用意しておけば安心でしょう。

差分バックアップがあまり手軽でなかったからこれまで完全バックアップでバックアップを行っていた方も、rdiff-backupで差分バックアップを始めてみてはいかがでしょうか。