Skip to content

Repository files navigation

git-backup

A cli to pull all your git repositories for backup purposes. It is completely stand-alone. You don't even need to install git.

Download

The latest version can be downloaded from the releases page.

Configuration File

The configuration file supports go templating to load secrets and other variables from the environment. An example yaml-Configuration looks like:

# The github section contains backup jobs for# GitHub and GitHub Enterprisegithub:
# (optional) The job name. This is used to# create a subfolder in the backup folder.# (default: GitHub)
- job_name: github.com# (optional) Set this url to connect to# your self-hosted github install.# (default: https://api.github.com)url: https://github.mydomain.com# (required) The GitHub personal access# token. Create one with the scopes:# "read:org, repo"# https://github.com/settings/tokens/new?scopes=repo,read:orgaccess_token: '{{ env "GITHUB_PAT" }}'# (optional) Back up repos you own.# (default: true)owned: true# (optional) Back up repos you starred.# (default: true)starred: true# (optional) Back up repos on which you# are a collaborator. (default: true)collaborator: true# (optional) Back up repos owned by# organisations of which you are a member.# (default: true)org_member: true# (optional) A list of repositories to backup.# Will be merged with the other discovery mechanisms# and it's result filtered with excluded repos.# (default: [])repositories:
- ChappIO/git-backup# (optional) Exclude this list of repos# or whole organizations/usersexclude:
- my-excluded-org
- my-excluded-user
- my-namespace/excluded-repository-name# The gitlab section contains backup jobs for# GitLab.com and GitLab on premisegitlab:
# (optional) The job name. This is used to# create a subfolder in the backup folder.# (default: GitLab)
- job_name: gitlab.com# (optional) Set this url to connect to# your self-hosted gitlab install.# (default: https://gitlab.com/)url: https://gitlab.mydomain.com# (required) The GitLab access token.# Create one with the scopes: "api"# https://gitlab.com/-/profile/personal_access_tokens?scopes=api&name=git-backupaccess_token: '{{ env "GITLAB_PAT" }}'# (optional) Back up repos you own.# (default: true)owned: true# (optional) Back up repos you starred.# (default: true)starred: true# (optional) Back up repos owned by# teams of which you are a member.# (default: true)member: true# (optional) A list of repositories to backup.# Will be merged with the other discovery mechanisms# and it's result filtered with excluded repos.# (default: [])repositories:
- gnuwget/wget2
- gitlab-org/api/client-go# (optional) Exclude this list of repos# or whole organizations/usersexclude:
- my-excluded-org
- my-excluded-user
- my-namespace/excluded-repository-name

Usage: CLI

Usage: git-backup
Options:
-backup.path string
The target path to the backup folder. (default "backup")
-config.file string
The path to your config file. (default "git-backup.yml")
-backup.fail-at-end
Fail at the end of backing up repositories, rather than right away.
-backup.bare-clone
Make bare clones without checking out the main branch.
-insecure
Use this flag to disable verification of SSL/TLS certificates
-version
Show the version number and exit.

Usage: Docker

First, create your git-backup.yml file at /path/to/your/backups.

Then update your backups using the mounted volume.

docker run -v /path/to/backups:/backups ghcr.io/chappio/git-backup:1

Parameters

You can specify several parameters when starting this container.

ParameterDescription
-v /path/to/backups:/backupsMount the folder where you want to store your backups and read you configuration file.
-e TZ=Europe/AmsterdamSet the timezone used for logging.
-e PUID=0Set the user id of the unix user who will own the backup files in /backup.
-e PGID=0Set the group id of the unix user's group who will own the backup files.

About

Backup all your github & gitlab repositories

Topics

Resources

Stars

301 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages