Learn more about the backup process for GitHub.
Xopero ONE is designed to protect DevOps ecosystems, including GitHub.
To ensure your entire GitHub environment is reliably backed up, make sure to include all repositories along with their related metadata — the best practice is to create a backup plan for critical repositories and metadata that change daily (or even more frequently), for example, using the recommended Grandfather-Father-Son (GFS) rotation scheme.
Additionally, create a separate backup plan for unused repositories that you need to keep for future reference. This type of backup primarily serves GitHub archival purposes, and with unlimited retention, you can store your copies for as long as needed — even indefinitely.
You can also delete repositories from your GitHub account while keeping a copy in storage, which helps bypass GitHub limits.
Incremental and differential backups help save storage space. In Xopero ONE you can define different retention and performance settings for each type of backup (full, incremental, and differential). For example, our software allows you to include only the blocks of GitHub data that have changed since the last backup, reducing storage usage, speeding up the process, and limiting bandwidth.
Use different types of storage to replicate backups, minimize the risk of outages or disasters, and comply with the 3-2-1 backup rule (which means having at least three copies of your data on two different storage types, with at least one copy stored in the cloud).
Xopero ONE is a multi-storage system that allows you to store your data:



This article contains information on how to set up a GitHub backup plan.
Login to XMS, open the Plans > Backup tab and click the Add plan button in the top bar.
Select GitHub from the list.
Select (or add) the GitHub environment you want to include in the backup process, and choose the repositories to back up.
Specify a name for the backup plan.
Select the appropriate metadata that you want to back up. Here, you can also change the default worker, which is the device directly responsible for the backup process of your repositories.
Select one of the locations assigned to your Xopero ONE instance as storage.
Customize the scheduler and specify how long your data should be retained. If needed, adjust the advanced settings to suit your needs.
If necessary, adjust the advanced settings such as encryption, error handling, or bandwidth limits to fit your requirements.
Double-check your data and click Save to create the backup plan.
In Xopero ONE, you can select repositories based on custom properties, but these properties must be configured at the organization level in GitHub. During synchronization, Xopero ONE retrieves the property definitions from the organization and the assigned values from the repositories. After synchronization, the panel displays a list of all properties fetched from every organization on the GitHub side that was added to XMS. For the feature to work correctly, the token used for authorization must also include the read:org permission.
Optionally, Xopero ONE allows you to protect the entire GitHub environment.
You can have multiple workers and assign different workers to each backup plan.
It is worth noting that the cloud worker (a cloud-installed Xopero ONE worker) allows you to perform cloud-to-cloud backups if you want to store your backups in the cloud.





Overview of protected GitHub resources, including repositories, wikis, and metadata secured by backup.
GitHub protected resources define which repositories and data Xopero ONE can access, secure, and restore.
The following list includes all GitHub resources covered by backup.
Support for backing up projects (classic) has been removed. It is now available only for restoring previously backed-up projects (classic). When restored, projects (classic) are automatically converted to projects v2. Protected metadata for projects (classic) includes cards, issues assigned to cards, pull requests assigned to cards, columns, and notes.
The list is presented in alphabetical order.
Lock branch
Require a pull request before merging
Require conversation resolution before merging
Require linear history
Require signed commits
Require status checks to pass before merging
Creator
Issue assets
Issue comments
Issue description
Issue types
Labels assigned
Milestones assigned
Open issues
Projects assigned
Sub-issues
Description
Name
Description
Due date
Open milestones
Title
Custom single select column
Custom text column
Description
Draft issues in project
Issues in project
Labels column
Linked pull requests column
Milestone column
Pull requests in project
Readme
Repository column
Reviewers column
State
Status column
Status updates
Commits
Creation date
Creator
Description
Labels
Merged pull requests
Milestones
Open pull requests
Commit creator
Commit message
Commit text
General settings
Allow merge commits
Allow rebase merging
Allow squash merging
Automatically delete head branches
Default branch
Default merge commits message
Default squash merging message
Template repository
Homepage
LFS
Logs
Objects
Refs
Repository
Repository description
Repository name
Settings
Deploy keys
Tags
Webhooks
Wiki
Name
Parent team
Permissions to repository
Team notifications
Visibility
Set as a pre-release
Set as the latest release
Tags