BACKUP AND RESTORE SPECS

CASES


REQUIREMENTS

BACKUP 
- Backup to independent text format using JSON text files like DB DUMP and Discourse does
- Backup all attached files (encrypt?)
- Encrypt the backup file archive or each file (need to determine) so that the backup file can't be read independent of RAVEN
    - Encryption key needs to be user selectable because we don't want any AyaNova user to be able to restore any other AyaNova users db

- Optionally automatically send the backups to online destinations such as 
    - AWS web storage
    - Dropbox
    - Mailbox if under certain size
    - Look into whatever apis are available for other online storage services
- Download backups
- Backup during closed window where server is not available for anything but read only operations during backup window
- User configurable backup time 
- User configurable encryption key in environment variable? If not set then not encrypted?? 




RESTORE
- Automatically closes api before RESTORE
- Restore from backup locations can save to? 
    - Or at least a method to fetch and list those backups to fetch to local?
- Upload a backup file for restoration
- Decrypts data during restore process
    - Must use user provided key and there should be some kind of marker file or something to verify it decrypted properly and is a valid AyaNova backup
- Restore the attached files (decrypt?)
- Uses user configurable encryption key

ROLES
- Ops ful, biz full can 
    - modify backup configuration
    - Restore 
    - Backup

- OpsLImited and biz limited can 
    - view the backup and restore configuration 
    - Backup



    




