https://github.com/carnivuth/github_sync
handy script to clone public repositories from a public account for backup that runs on docker container
https://github.com/carnivuth/github_sync
backup backup-script docker docker-compose github repository
Last synced: 2 months ago
JSON representation
handy script to clone public repositories from a public account for backup that runs on docker container
- Host: GitHub
- URL: https://github.com/carnivuth/github_sync
- Owner: carnivuth
- Created: 2024-07-04T07:16:44.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-03-14T15:30:26.000Z (over 1 year ago)
- Last Synced: 2025-07-30T23:03:00.739Z (11 months ago)
- Topics: backup, backup-script, docker, docker-compose, github, repository
- Language: Shell
- Homepage:
- Size: 15.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# Github sync
A handy script for backupping public repos from a github account :) (it's just my fear of loosing data :c ).
## Why this
**DO BACKUPS!!** this is what as been told to me since i started doing system administration tasks and projects. So i wrote this script moved by the fear of losing github repositories (as if my hard drives were more reliable than microsoft ones), originally designed to run as a cron job.
Recently i have migrated my homelab services to a configuration managed with ansible and terraform and i found myself dealing with a lot of scripts like this one that were not designed to be ported from a machine to another and the idea comes to mind:
*What if i put a cron script inside a docker container?*
and this abomination was born :)
## How it works
The script runs as a `cron` job, it fetches the github api to download the list of public repos and downloads them, then it curls the configured monitoring api.
```mermaid
sequenceDiagram
participant github
participant github_sync
participant monitoring_tool
github_sync ->> github: pull repository list
loop public repositories
github_sync ->> github: clone repository
end
github_sync ->> monitoring_tool: notify status
```
## Installation
Installation is done trough docker container a sample can be as follows
```yaml
services:
github_sync:
container_name: github_sync
image: carnivuth/github_sync:latest
environment:
HEALTHCHECK: "[HEALTHCHECKS.IO URL]"
NTFY: "[NTFY URL]"
ACCOUNT: "[GITHUB USERNAME TO BACKUP]"
volumes:
- ":/var/lib/github_sync"
- "/etc/timezone:/etc/timezone:ro"
- "/etc/localtime:/etc/localtime:ro"
```