This question appears to be off-topic. Especially if you expect:
- A software recommendation
- A completed software solution
Your question would receive more attention on: Server Fault
I recommend to use bacula because:
- You're obviously already familiar with it
- It supports your requirements
- It supports additional encryption which is recommended to store your data on aws
We are using a python script wich get fired periodically using cron.
You may run the script also after any job using RunScript.
The main concept is to use each volume once. After the desired volumes are marked as used, upload them to amazon glacier.
Our script does:
- Fetch the PoolId's of the desired Pools from
bacula.Pools
. We only upload full backups.
- Fetch MediaId's from
Media
with VolStatus=Used
and PoolId
is one of the previous
- Write MediaId's to a new table (eq:
MediaArchive
) wich keeps the state of processed glacier uploads.
- Upload the file
Media.VolumeName
using boto (create_archive_from_file)
- On success, save the archive id to your
MediaArchive
. Otherwise restart the upload.