{"id":15187532,"url":"https://github.com/cluetec/lifeboat","last_synced_at":"2025-06-16T22:35:26.195Z","repository":{"id":203686115,"uuid":"710151433","full_name":"cluetec/lifeboat","owner":"cluetec","description":"Backup solution to create backups from any kind of source system to any kind of storage system","archived":false,"fork":false,"pushed_at":"2025-04-07T12:23:15.000Z","size":336,"stargazers_count":14,"open_issues_count":23,"forks_count":2,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-08T06:32:36.463Z","etag":null,"topics":["azure","backup","backup-tool","database","hashicorp-vault","mongodb","mongodb-backup","postgresql","postgresql-backup","s3"],"latest_commit_sha":null,"homepage":"https://cluetec.de","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cluetec.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-26T06:01:26.000Z","updated_at":"2025-02-27T07:24:57.000Z","dependencies_parsed_at":"2024-01-24T14:39:25.559Z","dependency_job_id":"945548a6-600d-411d-bac9-20ceae6f968e","html_url":"https://github.com/cluetec/lifeboat","commit_stats":{"total_commits":51,"total_committers":4,"mean_commits":12.75,"dds":0.4509803921568627,"last_synced_commit":"b746011b808f29e037a2aac08f7055c1316e2fb3"},"previous_names":["cluetec/lifeboat"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cluetec/lifeboat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cluetec%2Flifeboat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cluetec%2Flifeboat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cluetec%2Flifeboat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cluetec%2Flifeboat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cluetec","download_url":"https://codeload.github.com/cluetec/lifeboat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cluetec%2Flifeboat/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260253271,"owners_count":22981440,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure","backup","backup-tool","database","hashicorp-vault","mongodb","mongodb-backup","postgresql","postgresql-backup","s3"],"created_at":"2024-09-27T18:23:49.709Z","updated_at":"2025-06-16T22:35:26.168Z","avatar_url":"https://github.com/cluetec.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Lifeboat\n\n[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/cluetec/lifeboat)](https://github.com/cluetec/lifeboat/releases)\n[![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/cluetec/lifeboat)](go.sum)\n[![Go Report Card](https://goreportcard.com/badge/github.com/cluetec/lifeboat)](https://goreportcard.com/report/github.com/cluetec/lifeboat)\n\nLifeboat is a backup tool provided by [cluetec GmbH](https://cluetec.de). Lifeboat enables the user to create backups\nfor a range of different source systems (e.g. PostgreSQL, MongoDB, HashiCorp Vault) and storing the backup also in\ndifferent destination storage systems (e.g. S3 Buckets, Azure Blob, S/FTP, local filesystem).\n\n## ✅ Supported Systems\n\nSource systems:\n\n- [x] Local filesystem\n- [ ] PostgreSQL (Not implemented yet)\n- [ ] MongoDB (Not implemented yet)\n- [ ] HashiCorp Vault (Not implemented yet)\n\nDestination storage systems:\n\n- [x] Local filesystem\n- [ ] S3 Bucket (Not implemented yet)\n- [ ] Azure Storage Account (Not implemented yet)\n- [ ] S/FTP (Not implemented yet)\n\n## 🔥 Motivation\n\ncluetec has been offering [software development services](https://www.cluetec.de/development/digitale-transformation/)\nfor several years now. We have been contracted with the implementation and initial operation of the software for a large\nnumber of projects. Here we repeatedly encountered the backup issue for various database systems. To avoid having to\ncopy and adapt shell scripts back and forth every time, we thought about turning these shell scripts into an application\nthat could be used to back up various database systems with as little adaptation effort as possible.\n\n## 💻 Installation\n\nAt the moment we don't provide any installation methods. As we just started the project, we will start with providing\nthe compiled binaries within the GitHub Releases. Later container images as also helm charts will follow.\n\n## ⚙️ Usage\n\nLifeboat is a CLI tool which makes it possible to use it in various kind of environments like on a local machine, in a\nUnix cronjob, in Kubernetes, in a VM, wherever the user wants. As the tool needs a quite complex configuration it's\npossible to provide a config file. In addition, it's also possible to provide all configuration via environment\nvariables.\n\n```shell\n$ lb\nLifeboat is a general purpose backup tool which supports backups for arbitrary sources and destinations.\n\nUsage:\n  lb [command]\n\nAvailable Commands:\n  backup      Execute the backup.\n  completion  Generate the autocompletion script for the specified shell\n  help        Help about any command\n\nFlags:\n  -h, --help   help for lb\n\nUse \"lb [command] --help\" for more information about a command.\n```\n\n### Configuration\n\nThe configuration is divided in three different parts:\n\n1. General configs\n2. Source system configs\n3. Destination storage configs\n\nIf you want to set a config via an environment variable, just concatenate the yaml structure (in uppercase characters)\nwith underscores (`_`). For example like this: `SOURCE_FILESYSTEM_PATH`\n\nTo get an idea how the configuration can look like, have a look at the [`config.yaml`](./config.yaml).\n\n#### General configuration\n\n| Yaml Config | Default | Required | Description                                                                                    |\n|-------------|---------|----------|------------------------------------------------------------------------------------------------|\n| `logLevel`  | `info`  | 👎       | Defines the log level of the application. Possible value are: `debug`, `info`, `warn`, `error` |\n\n#### Source system configuration\n\nAll configurations for the source system needs to be placed under the `source` object in the configuration.\nFurthermore, we need to define, which source system we want to use. This will be done by setting the `type` field, like\nit's done in the following example. The possible values can be found in the respective subsections for each source\nsystem.\n\n```yaml\nsource:\n  type: filesystem\n```\n\n##### Filesystem\n\nThe following configs need to be place under the following yaml structure:\n\n```yaml\nsource:\n  type: filesystem\n  filesystem:\n    ...\n```\n\n| Yaml Config | Default | Required | Description                                                                                                  |\n|-------------|---------|----------|--------------------------------------------------------------------------------------------------------------|\n| `path`      |         | 👍       | Defines the path in the local filesystem (relative or absolute) to a file or folder that should be backed up. |\n\n#### Destination storage configuration\n\nAll configurations for the destination storage systems needs to be placed under the `destination` object in the\nconfiguration. Furthermore, we need to define, which destination storage system we want to use. This will be done by\nsetting the `type` field, like it's done in the following example. The possible values can be found in the respective\nsubsections for each destination storage system.\n\n```yaml\ndestination:\n  type: filesystem\n```\n\n##### Filesystem\n\nThe following configs need to be place under the following yaml structure:\n\n```yaml\ndestination:\n  type: filesystem\n  filesystem:\n    ...\n```\n\n| Yaml Config | Default | Required | Description                                                                              |\n|-------------|---------|----------|------------------------------------------------------------------------------------------|\n| `path`      |         | 👍       | Defines the path in the local filesystem (relative or absolute) where to store the file. |\n\n## 🤝 Contribution\n\nEveryone is more than welcome to contribute to this project! That's what open source is all about!\n\nTo have some contribution guidance, please have a look at [CONTRIBUTING.md](CONTRIBUTING.md).\n\n### 👥 Contributors\n\n\u003ca title=\"Contributors\" href=\"https://github.com/cluetec/lifeboat/graphs/contributors\"\u003e\n  \u003cimg alt=\"Contributors\" src=\"https://contrib.rocks/image?repo=cluetec/lifeboat\" /\u003e\n\u003c/a\u003e\n\nMade with [contrib.rocks](https://contrib.rocks).\n\n## ⚖️ License\n\nThe project is licensed under the [\"Apache-2.0\"](./LICENSE) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcluetec%2Flifeboat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcluetec%2Flifeboat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcluetec%2Flifeboat/lists"}