Need help with ghbackup?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

139 Stars 12 Forks MIT License 121 Commits 1 Opened issues


Embarrassingly simple GitHub backup tool

Services available


Need anything else?

Contributors list

:floppy_disk: ghbackup

GoDoc Build Status Go Report Card

Backup your GitHub repositories with a simple command-line application written in Go.

The simplest way to keep your repositories save:

  1. Install
  2. Get a token from
  3. ghbackup -secret token /path/to/backup/dir

This will backup all repositories you have access to.

Embarrassing simple GitHub backup tool

Usage: ghbackup [flags] directory

directory path to save the repositories to

At least one of -account or -secret must be specified.

Flags: -account string GitHub user or organization name to get repositories from. If not specified, all repositories the authenticated user has access to will be loaded. -secret string Authentication secret for GitHub API. Can use the users password or a personal access token (https://github.c om/settings/tokens). Authentication increases rate limiting ( /#rate-limiting) and enables backup of private repositories. -silent Suppress all output -version Print binary version

For more visit


  • Note that

    under the hood. Please make sure it is installed on your system.
  • With Go:

    go get
  • With Homebrew:

    brew install qvl/tap/ghbackup
  • Download binary:


Mostly, we like to setup backups to run automatically in an interval.

Let's setup

on a Linux server and make it run daily at 1am. This works similar on other platforms. There are different tools to do this:

systemd and sleepto

Also see this tutorial.

systemd runs on most Linux systems and using sleepto it's easy to create a service to schedule a backup.

  • Create a new unit file:

    sudo touch /etc/systemd/system/ghbackup.service && sudo chmod 644 $_
  • Edit file: ``` [Unit] Description=GitHub backup

[Service] User=jorin ExecStart=/PATH/TO/sleepto -hour 1 /PATH/TO/ghbackup -account qvl /home/USER/github Restart=always

[Install] ```

  • Replace the paths with your options.

  • Start service and enable it on boot:

    sudo systemctl daemon-reload
    sudo systemctl enable --now ghbackup
  • Check if service is running:

    systemctl status ghbackup


Cron is a job scheduler that already runs on most Unix systems.

  • Run
    crontab -e
  • Add a new line and replace
    with your options:
0 1 * * * ghbackup -account NAME DIR

For example:

0 1 * * * ghbackup -account qvl /home/qvl/backup-qvl

Sending statistics

The last line of the output contains a summary. You can use this to collect statistics about your backups. An easy way would be to use a Slack hook and send it like this:

ghbackup -secret $GITHUB_TOKEN $DIR \
  | tail -n1 \
  | xargs -I%% curl -s -X POST --data-urlencode 'payload={"text": "%%"}' $SLACK_HOOK

What happens?

Get all repositories of a GitHub account. Save them to a folder. Update already cloned repositories.

Best served as a scheduled job to keep your backups up to date!


is about repositories. There are other solutions if you like to backup issues and wikis.

Use as Go package

From another Go program you can directly use the

sub-package. Have a look at the GoDoc.


Make sure to use

and create a Pull Request.


Push a new Git tag and GoReleaser will automatically create a release.



We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.