{"id":18625594,"url":"https://github.com/mdbecker/borg_rclone_crons","last_synced_at":"2026-06-23T06:32:06.378Z","repository":{"id":141939199,"uuid":"323180130","full_name":"mdbecker/borg_rclone_crons","owner":"mdbecker","description":"Cronjobs for syncing borg backups with s3 deep archive","archived":false,"fork":false,"pushed_at":"2020-12-23T03:53:47.000Z","size":21,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-19T15:37:51.012Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mdbecker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2020-12-20T22:49:45.000Z","updated_at":"2023-08-31T23:07:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"e945da61-4327-4625-bbb9-5805ee2e4feb","html_url":"https://github.com/mdbecker/borg_rclone_crons","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mdbecker/borg_rclone_crons","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdbecker%2Fborg_rclone_crons","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdbecker%2Fborg_rclone_crons/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdbecker%2Fborg_rclone_crons/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdbecker%2Fborg_rclone_crons/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdbecker","download_url":"https://codeload.github.com/mdbecker/borg_rclone_crons/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdbecker%2Fborg_rclone_crons/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34678932,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-23T02:00:07.161Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-11-07T04:35:13.379Z","updated_at":"2026-06-23T06:32:06.359Z","avatar_url":"https://github.com/mdbecker.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# borg_rclone_crons\nCronjobs for syncing borg backups with s3 deep archive\n\n## Ideas for improvements\nPer the borg [docs](https://borgbackup.readthedocs.io/en/stable/faq.html#can-i-copy-or-synchronize-my-repo-to-another-location), the current approach has a major flaw. If the borg backup becomes corrupt, that corruptions will be duplicated to the rcloned copy. Some ideas for addressing this limitation:\n* Create a second borg backup using rclone mount. The rclone borg backup will be distinct from the hdd backed copy. If the hdd version becomes corrupt the rclone copy will not be impacted.\n* Enable [bucket versioning](https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectVersioning.html?ref_=pe_411040_118635630) with lifecycle management. The AWS docs suggest you can do this using a noncurrent expiration policy. The downside of this approach is that if your last borg backup is older than your expiration policy, you will only have the last version, which could be corrupt. This could be mitigated by running `borg check` on a regular basis (for example at least half the bucket retention priod). This way you could be sure you have at least one consistent version of your data in the bucket. The only way you could end up with an unusable s3 bucket is if you haven't run either a borg backup or check in \u003e the retention period and if your last backup is corrupt. Many things would have to go wrong for this to be true but it's not impossible.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdbecker%2Fborg_rclone_crons","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmdbecker%2Fborg_rclone_crons","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdbecker%2Fborg_rclone_crons/lists"}