$$$$$$\ $$\ $$\ $$$$$$$\ $$$$$$\ $$\ $$\ $$$$$$\ $$$$$$\ $$$$$$\
$$ __$$\ $$ | $$ |$$ __$$\ $$ __$$\ $$$\ $$ |$$ __$$\ $$ __$$\ $$ __$$\
$$ / \__|$$ | $$ |$$ | $$ |$$ / $$ |$$$$\ $$ |$$ / $$ | $$ / $$ |$$ / \__|
$$ | $$$$$$$$ |$$$$$$$ |$$ | $$ |$$ $$\$$ |$$ | $$ |$$$$$$\ $$ | $$ |\$$$$$$\
$$ | $$ __$$ |$$ __$$< $$ | $$ |$$ \$$$$ |$$ | $$ |\______|$$ | $$ | \____$$\
$$ | $$\ $$ | $$ |$$ | $$ |$$ | $$ |$$ |\$$$ |$$ | $$ | $$ | $$ |$$\ $$ |
\$$$$$$ |$$ | $$ |$$ | $$ | $$$$$$ |$$ | \$$ | $$$$$$ | $$$$$$ |\$$$$$$ |
\______/ \__| \__|\__| \__| \______/ \__| \__| \______/ \______/ \______/
chrono-os backup-io is a Linux-first backup assistant that helps users scan selected home folders, archive files to a local backup device, and keep a metadata trail in a private GitHub repository. It is built in Go with a Bubble Tea TUI and focuses on safe, repeatable backups and restores across common Linux distributions.
- Make backups fast to configure and repeat for everyday Linux users.
- Keep sensitive file data on local devices by default.
- Preserve enough metadata for reliable, auditable restores.
- Provide a consistent workflow across major Linux distributions.
- Select which home folders are included in scans and backups.
- Ignore file types by extension (stored and reused).
- Optional archive compression (
.taror.tar.gz). - External drive detection and free-space checks before backup.
- Package inventory capture by distro and optional restore selection.
- Private GitHub metadata publishing via the GitHub CLI.
- Restore workflow with overwrite policy.
- Linux (x86_64 recommended)
- Go 1.22+
- GitHub CLI (
gh) for metadata publishing lsblkfor drive detectiongitfor metadata repository creation
go mod tidygo run ./cmd/backup-io- Select folders to scan (home directory only).
- Run a scan to build a file manifest.
- Select a backup drive.
- Run a backup to create an archive on the drive.
- Publish metadata to a private GitHub repo (optional).
- Restore by selecting a backup and confirming overwrite policy.
- Archives are written to the selected drive under
mcbackup/. - Metadata lives in
~/.mcbackupand is included in each archive. - GitHub publishing uploads only metadata and configuration files, not archives.
~/.mcbackup contains:
scan.json(latest manifest)history.json(backup history)packages.json(installed package list)packages-selected.json(explicit restore selection)ignore.json(ignored file extensions)folders.json(selected home folders)
- Restore unarchives to the original relative paths under your home directory.
- You choose whether to overwrite existing files.
- Package restore uses only the explicitly selected list.
- On Arch Linux, restore auto-installs
yayand configures chaotic-aur.
- File data stays on local backup media unless you choose to upload it separately.
- GitHub metadata repositories are created as private.
sudois required only for package install operations during restore.
- GitHub auth errors: run
gh auth loginand retry. - Repo creation fails: ensure
gitis installed andghis logged in. - No drives detected: verify the drive is mounted and
lsblkis available. - Package restore fails: check your distro package manager and
sudoaccess.
Does GitHub store my backup archives? No. GitHub stores only metadata and configuration files.
Can I back up only specific folders? Yes. Use “Select folders to scan” in the TUI.
What happens if the drive is too small? Backups will be blocked before writing if free space is insufficient.
Can I restore without a backup drive? Only metadata can be fetched from GitHub. The archive must be available locally.
Issues and pull requests are welcome. Please include a clear description of changes and any relevant testing notes.
Open an issue with logs and your distro/version details.