Bacula - ディスク バックアップ GFS スキーム「ホール」

Bacula - ディスク バックアップ GFS スキーム「ホール」

ハードドライブ上の bacula を使用して GFS スキームを実装することについて質問があります (デーモンはすでに正常に動作しています)。

達成したいこと:

半年ごとに、少なくとも 12 か月間はアクセス可能なフル バックアップが必要です -> 2 回目のフル バックアップが最初のバックアップを上書きしないように、バックアップを 12 か月より少し長く保存する必要があります。つまり、少なくとも 3 回のフル バックアップが存在することになります (18 か月を選択しました)。これは、数日、数か月など、継続されます。シンプルな GFS スキームです。

Schedule{
  Name = "GGFSCycle"
  Enabled = yes

  # DailyCycle - the volume is kept for 14 days
  Run = Level=Incremental Pool=DailyPool FullPool=HalfAnnualPool Priority=10 tuesday-sunday at 03:00

  # WeeklyCycle - the volume is kept for 5 weeks
  Run = Level=Incremental Pool=WeeklyPool FullPool=HalfAnnualPool Priority=11 monday at 03:00
  
  # MonthlyCycle - the volume is kept for 7 months
  Run = Level=Differential Pool=MonthlyPool FullPool=HalfAnnualPool Priority=12 february-june 1 at 03:00
  Run = Level=Differential Pool=MonthlyPool FullPool=HalfAnnualPool Priority=12 august-december 1 at 03:00

  # HalfAnnualCycle - the data is kept for 18 months
  Run = Level=Full Pool=HalfAnnualPool Priority=13 january 1 at 03:00
  Run = Level=Full Pool=HalfAnnualPool Priority=13 july 1 at 03:00

}

Pool {    
  Name = DailyPool
  Pool Type = Backup
  Storage = backup-server-sd
  Label Format = "DailyVol_"
  Volume Use Duration = 23 hours
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 14 days         
  Maximum Volume Bytes = 50M          # Limit Volume size to something reasonable
  Maximum Volumes = 1000              # Limit number of Volumes in Pool
  # -> max 50G
}

Pool {
  Name = WeeklyPool
  Pool Type = Backup
  Storage = backup-server-sd
  Label Format = "WeeklyVol_"
  Volume Use Duration = 23 hours
  Recycle = yes
  AutoPrune = yes
  Volume Retention = 5 weeks
  Maximum Volume Bytes = 500M 
  Maximum Volumes = 80
  # -> max 70G
}

Pool {
  Name = MonthlyPool
  Pool Type = Backup
  Storage = backup-server-sd
  Label Format = "MonthlyVol_"
  Volume Use Duration = 2 days
  Recycle = yes
  AutoPrune = yes
  Volume Retention = 7 months
  Maximum Volume Bytes = 5G
  Maximum Volumes = 80
  # -> max 170G
}
 
Pool {
  Name = HalfAnnualPool
  Pool Type = Backup
  Label Format = "HalfannualVol_"
  Storage = backup-server-sd
  Volume Use Duration = 3 days
  Recycle = yes
  AutoPrune = yes
  Volume Retention = 18 months #1,5 years
  Maximum Volume Bytes = 35G
  Maximum Volumes = 20
  # -> max 700G
}

私が見ている問題:

増分バックアップは常に最後の増分バックアップ、差分バックアップ、または完全バックアップを参照し、それ以降に変更されたファイルのみを保存します。私の計画では、毎日と毎週の 2 つの「異なる」増分バックアップがあります。毎週のバックアップは常に前日の毎日のバックアップを参照しますよね? 毎週のバックアップを 4 週間以上 (5 週間を選択) 保存し、毎日のバックアップを 10 日間以上 (14 日間を選択) 保存すると、毎日のファイルは 14 日後に削除されますが、毎月のバックアップは引き続きそれらのファイルを参照します。つまり、「穴」ができるということですか?

週次増分バックアップは週次バックアップ (レベル 0) のみを参照し、日次増分バックアップは日次バックアップ (レベル 1) のみを参照するように、増分バックアップの複数の「レベル」を設定できれば、問題はなくなるだろうと分かりました。フル バックアップを短期間保持すると、同じ問題が発生します。たとえば、フル バックアップが唯一の既存のバックアップを上書きすると、差分バックアップが参照できるフル バックアップがなくなり、その時点までに作成したすべてのバックアップが失われます。

私が見つけたもの:

インターネットで調べてみたらバキュラのドキュメントの章: 「これらの異なる種類の保存はそれぞれ異なる期間有効である必要があるため、これを実現する最も簡単な方法 (おそらく唯一の方法) は、バックアップ タイプごとに個別のプールを用意することです。」と述べています。

私の質問:

  1. つまり、基本的には、bacula ドキュメントの章にある単一の full-、diff-、inkr-pools 以外の解決策はないということです。これは正しいですか?
  2. それが間違っている場合、2 つの異なる増分プールを使用して目標を達成するにはどうすればよいですか?

私はまた、bacula のドキュメントで基本ジョブについて読みました。それは正しいことではありませんが、正しい方向に進んでいます。

ここまで読んでいただき、ありがとうございました。

Ps: 私は英語を母国語としない人なので、間違いがあったらごめんなさい。本当に腹が立つことがあれば、英語力向上のためにもぜひ教えてください。

ありがとう。

答え1

bacula-user-mailinglist の助けを借りて、今ではこの問題を解決しました。1 つのジョブに対して複数の増分プールを効果的に持つことは不可能です。私は設定を次のように変更しました。

Schedule{
  Name = "GFSCycle"
  Enabled = yes

  # DailyCycle - the volumes are kept for 40days
  Run = Level=Incremental Pool=DailyPool FullPool=HalfAnnualPool Priority=10 daily at 03:00
  
  # MonthlyCycle - the volumes are kept for 7months
  Run = Level=Differential Pool=MonthlyPool FullPool=HalfAnnualPool Priority=11 february-june 1 at 03:00
  Run = Level=Differential Pool=MonthlyPool FullPool=HalfAnnualPool Priority=11 august-december 1 at 03:00

  # HalfAnnualCycle - the volumes are kept 12months
  Run = Level=Full Pool=HalfAnnualPool Priority=12 january 1 at 03:00
  Run = Level=Full Pool=HalfAnnualPool Priority=12 july 1 at 03:00


Pool {    
  Name = DailyPool
  Pool Type = Backup
  Storage = backup-server-sd
  Label Format = "DailyVol_"
  Volume Use Duration = 23 hours
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 40 days
  Maximum Volume Bytes = 50M          # Limit Volume size to something reasonable
  Maximum Volumes = 3000              # Limit number of Volumes in Pool
  # -> max 150G
}

Pool {
  Name = MonthlyPool
  Pool Type = Backup
  Storage = backup-server-sd
  Label Format = "MonthlyVol_"
  Volume Use Duration = 2 days
  Recycle = yes
  AutoPrune = yes
  Volume Retention = 7 months
  Maximum Volume Bytes = 5G
  Maximum Volumes = 80
  # -> max 170G
}
 
Pool {
  Name = HalfAnnualPool
  Pool Type = Backup
  Label Format = "HalfannualVol_"
  Storage = backup-server-sd
  Volume Use Duration = 3 days
  Recycle = yes
  AutoPrune = yes
  Volume Retention = 12 months
  Maximum Volume Bytes = 35G
  Maximum Volumes = 20
  # -> max 700G 
}

その単一クライアントのファイルおよびジョブの保持期間は、最大ボリューム保持期間に設定されます。

-> ファイル保持期間 = 12 か月、ジョブ保持期間 = 12 か月

便利な仮想フルバックアップもあります。詳細については、以下を参照してください。 https://www.baculasystems.com/増分バックアップソフトウェア/

もう一度、私が問題を解決するのを手伝ってくれた bacula-user-mailinglist の皆さんに心から感謝します。

関連情報