{"id":17543522,"url":"https://github.com/alixinne/gitr-backup","last_synced_at":"2026-02-04T00:03:07.709Z","repository":{"id":160133221,"uuid":"622412444","full_name":"alixinne/gitr-backup","owner":"alixinne","description":"Git host mirroring tool","archived":false,"fork":false,"pushed_at":"2024-07-18T16:23:36.000Z","size":48,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-31T22:45:20.249Z","etag":null,"topics":["backup","git","mirror"],"latest_commit_sha":null,"homepage":"","language":"Go","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/alixinne.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-02T03:01:12.000Z","updated_at":"2024-07-18T16:23:38.000Z","dependencies_parsed_at":"2024-01-06T01:30:09.047Z","dependency_job_id":"98851c79-fc56-41cb-b60d-b5e8f257887e","html_url":"https://github.com/alixinne/gitr-backup","commit_stats":null,"previous_names":["alixinne/gitr-backup"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/alixinne/gitr-backup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alixinne%2Fgitr-backup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alixinne%2Fgitr-backup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alixinne%2Fgitr-backup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alixinne%2Fgitr-backup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alixinne","download_url":"https://codeload.github.com/alixinne/gitr-backup/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alixinne%2Fgitr-backup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29062483,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T23:14:54.203Z","status":"ssl_error","status_checked_at":"2026-02-03T23:14:50.873Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["backup","git","mirror"],"created_at":"2024-10-21T00:24:32.802Z","updated_at":"2026-02-04T00:03:07.690Z","avatar_url":"https://github.com/alixinne.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [gitr-backup](https://github.com/alixinne/gitr-backup)\n\ngitr-backup is a tool to mirror personal repositories from one Git hosting\nservice to another. This is mainly used for backing up repositories on\nplatforms that do not natively support pull mirrors (Gitea, GitHub, GitLab CE).\n\nThis is a successor (and rewrite) of\n[gem-repositories](https://github.com/alixinne/gem-repositories). This\nrewrite is not complete and does not cover the entire feature set of\ngem-repositories:\n\n| Platform (usage) |    gitr-backup     |  gem-repositories  |\n| :--------------: | :----------------: | :----------------: |\n| GitHub (source)  | :heavy_check_mark: | :heavy_check_mark: |\n| GitHub (backup)  |        :x:         | :heavy_check_mark: |\n| GitLab (source)  |        :x:         | :heavy_check_mark: |\n| GitLab (backup)  |        :x:         | :heavy_check_mark: |\n|  Gitea (source)  | :heavy_check_mark: | :heavy_check_mark: |\n|  Gitea (backup)  | :heavy_check_mark: | :heavy_check_mark: |\n\n## Getting started\n\n### Running from source\n\nTo run this project from source:\n\n```bash\ngit clone --recurse-submodules https://github.com/alixinne/gitr-backup.git\ncd gitr-backup\nmake -C git2go install-static\ngo run -tags static .\n```\n\n### Running with Docker\n\nThis project is distributed as a Docker image built using GitHub Actions.\n\n```bash\ndocker run --rm -it -v $PWD/config.yaml:/config.yaml:ro ghcr.io/alixinne/gitr-backup:0.2.0\n```\n\n### Configuration file\n\nThis tool relies on a configuration file (`config.yaml`) being present in the\ncurrent directory. This configuration files describes what are the source and\ndestination Git hosts to mirror. Here is a sample configuration file:\n\n```yaml\nhosts:\n  - type: github\n    token: $GITHUB_TOKEN # Fetched from environment variable\n    use_as: source\n  - type: gitea\n    base: https://gitea.example.com\n    token: $GITEA_API_TOKEN # Fetched from environment variable\n    use_as: backup\n```\n\nIn this configuration file, repositories owned by the user whose token is\ncontained in the `GITHUB_TOKEN` environment variable will be mirrored as\nrepositories owned by the user whose token is `GITEA_API_TOKEN` on the Gitea\nhost gitea.example.com.\n\nIf you specify multiple source hosts, they will all be replicated to the backup\nhosts.\n\nIf you specify multiple backup hosts, they will all get a mirror of all the\nsource repositories.\n\n## Author\n\nAlixinne \u003calixinne@pm.me\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falixinne%2Fgitr-backup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falixinne%2Fgitr-backup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falixinne%2Fgitr-backup/lists"}