New Features
- Added support for `.yaml`/`.yml` config files.
- Configuration `-c` option now expects a folder with a config file and tasks.
- File secrets backend will default to `${config_folder}/secrets` as `basePath` instead of fail.
- Implemented actions and tasks.
- Backups will have a *backup manifest* with information about what has been run and what files/folders have been generated from each *task* - useful for a future restoring functionality.
- Added config validations using json schema.
- When uploading to cloud storage, compress and/or encrypt steps are done using actions implementation (avoiding duplicated code).
- Implemented *unactions* system for the future restore mode
- Uploading backups will now keep some folder structure and will only archive folders that were result of a task. This will simplify restore operations in any sense :)
- Added tests :)
Cool bits
- Tool can be found in [PyPi](https://pypi.org/project/mdbackup/): go and install it using `pip install mdbackup` 😄
- Deployed documentation to GitHub Pages: [mdbackup.majorcadevs.com](https://mdbackup.majorcadevs.com/)
Fixes
- Improvements and bug fixes on S3 and B2 upload, including random `KeyError` exceptions.
- Fixed issues when uploading files to S3/B2 that will contain duplicated prefix keys or rogue `/` characters.
- Fixed crash when using python 3.6 (we want to make it fully compatible with that version).
Breaking changes
- Configuration switch `-c` expects folder not a config file.
- Backup logic is now done using *actions* and *tasks* which are defined using `yaml` files inside `${config_folder}/tasks`.
- `compression`, `encrypt` and `storages` are now inside a `cloud` parent element.
- `storages` is called now `providers`.
- `ftp` and `ftps` providers now have `port` setting.
- `sftp` changed the setting from `disableHostKeys` to `enableHostKeys`.
- Rework commands: they are now friendlier and accept different arguments depending on the command ([check out documentation](https://mdbackup.majorcadevs.com/dev/arguments/) for more)