私は2つの場所を持っています。1つはヨーロッパに、もう1つはアジアにあります。各場所には、ローカルバックアップを処理するための完全に機能するBaculaシステムがあります。
私がやりたいのは、ある場所のSDから別の場所のSDにいくつかのジョブをコピーすることです。理想的には、場所Aでバックアップを実行し、場所Bにコピーして、場所Bのサーバーに復元できる場合です。
バージョン7.0.0Bacula以降ではSDからSDへのバックアップが許可されていることを理解しています。これが私が必要としている機能だと思います(baculaマニュアル)
Baculaバージョン7.0では、コピージョブと移行ジョブのSDからSDへの転送が許可されています。これにより、一般にBaculaバックアップのレプリケーションまたはオフサイト転送と呼ばれるものが可能になります。コピーまたは移行ジョブのソースSDと宛先SDが異なる場合、自動的に発生します。
問題は、そのような仕事を設定する方法がわからないことです。これに関するチュートリアルは見つかりませんでした。
私の最初の考えは、コピージョブを使用する必要があるということでしたが、同じマニュアルから:
移行は、単一のストレージデーモンに対してのみ実装されます。あるストレージデーモンで読み取り、別のストレージデーモンに書き込むことはできません。
それはまさに私がやりたかったことです...
これをどのように達成できるかについてのアイデアはありますか?
私は(a)解決策を見つけました...
鍵はここにあるようです:
コピーまたは移行ジョブのソースSDと宛先SDが異なる場合、自動的に発生します。
私の目標は、いくつかのバックアップジョブをアジアからヨーロッパにコピーすることでした。これを行うために、私はヨーロッパSDでデバイスを作成しました。
Device {
Name = asiaBackup
Media Type = File1
Device Type = File
Archive Device = /bacula/asia
LabelMedia = yes
Random Access = Yes;
AutomaticMount = yes;
RemovableMedia = no;
AlwaysOpen = no;
Maximum Concurrent Jobs = 40;
Autochanger = no;
}
次に、アジアのディレクターで、ヨーロッパのSDからこのデバイスを指す1つのストレージを作成しました。
Storage {
Name = europeStorage
Address = myEuropeDomain.com
SDPort = 9103
Password = "blaBlaBla...."
Device = asiaBackup
Media Type = File1
Maximum Concurrent Jobs = 5
Heartbeat Interval = 10
}
/* dbPool = the pool where the backup sits locally */
Pool {
Name = dbPool
Label Format = "dbBackup"
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 365 days
Maximum Volume Bytes = 5G
Maximum Volumes = 1000
Label Format = "dbVol-"
Recycle Oldest Volume = yes
Next pool = "europeBackupPool"
Storage = dbStorage
}
/* europeBackupPool = the destination pool of copy job */
Pool {
Name = europeBackupPool
Label Format = "dbBackup"
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 365 days
Maximum Volume Bytes = 5G
Maximum Volumes = 1000
Label Format = "euBKVol-"
Recycle Oldest Volume = yes
Storage = europeStorage
}
そしてこのコピージョブ
Job {
Name = backupToEurope
Type = Copy
Pool = dbPool
Selection Type = PoolUncopiedJobs
Schedule = "dailyFullSchedule"
Client = "none"
FileSet = "none"
Messages = Standard
}
これはジョブがコピーされるプールを指定しているため、初期プールの「次のプール」ディレクティブに注意してください。
その後、バックアップを実行すると、次のようになります。
Run Copy job
JobName: backupToEurope
Bootstrap: *None*
Client: none
FileSet: none
Pool: dbPool (From Job resource)
NextPool: europeBackupPool (From Job Pool's NextPool resource)
Read Storage: dbStorage (From Pool resource)
Write Storage: europeStorage (From Job Pool's NextPool resource)
JobId: *None*
When: 2015-04-01 18:44:27
Catalog: MyCatalog
Priority: 10
ここでの欠点は、このバックアップを復元する場合、ヨーロッパのディレクターがこの仕事についての手がかりを持っていないため、アジアのディレクターからそれを行う必要があるということです...
1つ追加するだけです。 bscanを使用してみてください。ボリューム(コピーされたボリューム)を再度「読み取り」、他の場所のカタログにインポートできます。 2番目のサイトでも復元できます;)したがって、何か問題が発生した場合に、最初のディレクターへの依存を回避できます。
それが役に立てば幸い。乾杯フィリペ