- Go 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
The bare `fullback` gitignore rule was excluding the CLI package path, so the published module had no installable main package. Co-authored-by: Cursor <[email protected]> |
||
| cmd/fullback | ||
| internal | ||
| .gitignore | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| README.md | ||
fullback
A simple CLI backup utility that recursively archives a directory into a zip file, with optional incremental (partial) backups tracked via content hashes.
Install
go install git.dylanlegendre.com/MorpheusZero/fullback/cmd/fullback@latest
Or from a clone:
go build -o fullback ./cmd/fullback
Usage
Full backup
Archives every regular file under the given path and records state for later incremental runs:
fullback full /path/to/folder
fullback full /path/to/folder -o /backups/my-backup.zip
Default output name (in the current working directory):
fullback-<basename>-<YYYYMMDD-HHMMSS>.zip
Partial backup
Zips only files that are new or whose SHA-256 changed since the last backup of that same absolute path:
fullback partial /path/to/folder
If nothing changed, no zip is written (nothing to backup). You must run a full backup for that path at least once before partial.
Quiet mode
Suppress progress and informational messages (useful for cron). Errors and per-file warnings still go to stderr:
fullback full /path/to/folder -q
fullback partial /path/to/folder --quiet
State
All backup roots share a single manifest:
~/.fullback/manifest.json
Each absolute backup root is a key under roots, with a map of relative file paths to size, mod time, and SHA-256. Concurrent runs are not locked in v1 and may race if started at the same time.
Behavior notes
- Progress shows percentage and ETA on a single updating line (default).
- Symlinks and non-regular files are skipped with a warning.
- Unreadable files/directories are skipped with a warning; the run continues.
- The output zip path must not be inside the source tree.
- The manifest is updated only after a successful zip write (or a confirmed no-op partial).