Updated the README

This commit is contained in:
2026-09-03 13:34:29 -04:00
parent 0144cc2b4e
commit d3f5ab1ee8
2 changed files with 68 additions and 5 deletions
+68 -5
View File
@@ -1,19 +1,82 @@
# Goblin Store
Incremental backup tool using rclone.
Incremental backup tool using rsync and rclone.
## Usage
To backup a directory, simply run it like so:
Goblin store provides two options to backup a directory - **cloud** and **local**.
### Local Backups
Local backups use rsync as the backend, as it provides better control over local file permissions and can utilize hardlinks to provide a "more complete" snapshot of the source directory on a given day.
```shell
./goblin-store backup -s <SOURCE_DIRECTORY> -d <DESTINATION_DIRECTORY>
./goblin-store backup local -s <SOURCE_DIRECTORY> -d <DESTINATION_DIRECTORY>
```
Breaking down the above:
This will provide the following directory structure:
```shell
DESTINATION_DIRECTORY/
├── 2026-09-03_13-14-07/ <- Baseline backup
│ ├── dir1/ <- Real directory
│ │ └── data.bin <- Original file (inode: 1001)
│ ├── dir2/
│ └── file1.txt <- Original file (inode: 1002)
└── 2026-09-04_00-00-00/ <- Next snapshot (hardlinked against previous)
├── dir1/ <- Real directory (recreated)
│ └── data.bin <- Unchanged: hard link to previous run (inode: 1001, 0 bytes used)
├── dir2/
├── file1.txt <- Unchanged: hard link to previous run (inode: 1002, 0 bytes used)
└── file2.txt <- New file copied from source (inode: 1003)
```
Breaking down the above command:
* `./goblin-store` - running the app binary
* `backup` - call the **backup** command
* `backup` - run the **backup** command
* `local` - run the **local** subcommand
* `-s <SOURCE_DIRECTORY>` - the directory you'd wish to backup (REQUIRED)
* `-d <DESTINATION_DIRECTORY>` - the directory you'd wish to store the backups in (REQUIRED)
You may modify the behavior with these additional flags:
* `-v` - enable verbose console logging
### Cloud Backups
**Note:** Cloud backends are currently not integrated into the app, but they can be used currently if you prefer the latest/incrementals directory structure on local disk.
Cloud backups utilize rclone as the backend for file copies, as it provides better support for cloud backends (S3, etc) and multi-threading support.
```shell
./goblin-store backup cloud -s <SOURCE_DIRECTORY> -d <DESTINATION_DIRECTORY>
```
This will provide the following directory structure:
```shell
DESTINATION_DIRECTORY/
├── 2026-09-03_13-14-07/ <- Baseline backup
│ ├── dir1/ <- Real directory
│ │ └── data.bin <- Original file (inode: 1001)
│ ├── dir2/
│ └── file1.txt <- Original file (inode: 1002)
└── 2026-09-04_00-00-00/ <- Next snapshot (hardlinked against previous)
├── dir1/ <- Real directory (recreated)
│ └── data.bin <- Unchanged: hard link to previous run (inode: 1001, 0 bytes used)
├── dir2/
├── file1.txt <- Unchanged: hard link to previous run (inode: 1002, 0 bytes used)
└── file2.txt <- New file copied from source (inode: 1003)
```
Breaking down the above command:
* `./goblin-store` - running the app binary
* `backup` - run the **backup** command
* `cloud` - run the **cloud** subcommand
* `-s <SOURCE_DIRECTORY>` - the directory you'd wish to backup (REQUIRED)
* `-d <DESTINATION_DIRECTORY>` - the directory you'd wish to store the backups in (REQUIRED)
BIN
View File
Binary file not shown.