Opened 6 years ago
Last modified 19 months ago
#22 new enhancement
Improve backup / restore tools
| Reported by: | yomguy | Owned by: | yomguy |
|---|---|---|---|
| Priority: | major | Milestone: | 1.5 |
| Component: | Backup | Version: | |
| Keywords: | backup | Cc: |
Description
Telemeta needs a strong backup api to archive WAV data, metadata (XML) and SQL data.
The program called by a cron job should first make a backup on local hard disk drives, test a safe dry restore and then synchronize it with an external server (rsync+ssh). Some informations of the last backup should be displayed on a web page in the admin.
Change History (9)
comment:1 Changed 6 years ago by olivier
- Status changed from new to assigned
comment:3 Changed 4 years ago by yomguy
- Milestone set to 1.0
Serializing features driven from django tools are working since 0.3. But future developments will be needed to import / export data in various formats.
comment:4 Changed 4 years ago by yomguy
- Component changed from Miscellaneous to Backup
comment:5 Changed 4 years ago by anonymous
- Type changed from defect to task
comment:6 Changed 4 years ago by yomguy
- Summary changed from Create backup tools to Improve backup tools
comment:7 Changed 19 months ago by yomguy
- Milestone changed from 1.0 to 1.5
- Summary changed from Improve backup tools to Improve backup / restore tools
comment:8 Changed 19 months ago by yomguy
- Owner changed from olivier to yomguy
- Status changed from assigned to new
comment:9 Changed 19 months ago by yomguy
- Type changed from task to enhancement
Note: See
TracTickets for help on using
tickets.

I've made a simple backup layer (r109). There is now a functional command line tool: bin/telemeta-backup
Example:
telemeta-backup /path/to/django/project /path/to/backup
It's simple, there's not much error handling, but Python exceptions are rather clear anyway. I'll try to consolidate this a bit though.
This implementation is 100% Python (including the md5 routine), for maximum portability. It doesn't use any external binaries, etc...
It is meant for demonstration purpose only, I won't implement the restore feature (dry or not) for milestone:"Version 0.3".
I'll see what I can do for the backup web interface, but I'm afraid I won't have the time.
Regarding the rsync calls from within the Python code, I think this is bad design, too monolithic. IMO such call should happen outside of the application scope. It is more relevant to system administration.
For example: a system administrator will have a hard time debugging rsync transfers if they are obscurely performed by Telemeta. But it will be much easier for him to understand that telemeta-backup builds the backup in a directory, and that he is responsible for transfering it online, burn it to a tape, whatever, etc...
rsync/cdrecord/tar/whatever just aren't in Telemeta's scope too me.