README.md
Rama main · réplica de lectura del repositorio original.
<p align="center">
<img src=".github/assets/logo.png" alt="BackHub Logo" width="250" />
</p>
<h1 align="center">BackHub</h1>
<p align="center">
<a href="https://github.com/tanq16/backhub/actions/workflows/release.yml"><img src="https://github.com/tanq16/backhub/actions/workflows/release.yml/badge.svg" alt="Release"></a> <a href="https://github.com/Tanq16/backhub/releases"><img alt="GitHub Release" src="https://img.shields.io/github/v/release/tanq16/backhub"></a>
</p>
<p align="center">
<b>BackHub</b> is a simple GitHub repository backup tool that creates complete local mirrors of your repositories.
</p>
---
# Features
- Full repository mirroring including all branches, tags, and history
- Concurrent backup processing for multiple repositories defined in a YAML config file
- GitHub token-based authentication (to be used in an environment variable)
- Easy restoration capability due to it being local mirror
- Multi-arch and multi-OS binary for simple one-time usage
- A unique output provider with a fancy and detailed progress monitoring system
# Installation
### Binary
The easiest way to use Backhub is to download it from the [project releases](https://github.com/Tanq16/backhub/releases) for your OS and architecture.
### Development Build
```bash
go install github.com/tanq16/backhub@latest
```
### Build from Source
```bash
git clone https://github.com/tanq16/backhub.git && \
cd backhub && \
go build
```
# Usage
Backhub uses an environment variable to authenticate to GitHub. To do this, set your `GH_TOKEN` variable. This can be done inline with:
```bash
GH_TOKEN=pat_jsdhksjdskhjdhkajshkdjh backhub
```
Alternatively, export it to your shell session with:
```bash
export GH_TOKEN=pat_jsdhksjdskhjdhkajshkdjh
```
With the environment variable exported, `backhub` can be directly executed multiple times from the command line like so:
```bash
# config file
backhub /path/to/config.yaml
# direct repo
backhub github.com/tanq16/backhub
```
# YAML Config File
BackHub uses a simple YAML configuration file:
```yaml
repos:
- github.com/username/repo1
- github.com/username/repo2
- github.com/org/repo3
```
For Docker, put the config file in the mounted directory and name it `config.yaml`.
# Using the Local Mirrors
To use a local mirror as a Git repository source (like when you need to restore from the backup), the following can be done:
1. Directly pull or clone from the mirror treating it as a `backup` remote in an existing repository:
```bash
git remote add backup /path/to/your/mirror.git
git pull backup main # or any other branch
git clone /path/to/your/mirror.git new-repo
```
2. Serve the mirror via a local git server and use it :
```bash
git daemon --base-path=/path/to/mirror --export-all
git clone git://localhost/mirror.git # in a different path
```
3. Use the mirror as a git server by refering to it through the file protocol:
```bash
git clone file:///path/to/mirror.git
```
Being a mirror, it contains all references (branches, tags, etc.), so cloning or pulling from it allows accessing everything as if it's the original. Use `git branch -a` to see all branches and `git tag -l` to see all tags in the mirror.