Updated the README
This commit is contained in:
@@ -1,19 +1,82 @@
|
|||||||
# Goblin Store
|
# Goblin Store
|
||||||
|
|
||||||
Incremental backup tool using rclone.
|
Incremental backup tool using rsync and rclone.
|
||||||
|
|
||||||
## Usage
|
## 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
|
```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
|
* `./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)
|
* `-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)
|
* `-d <DESTINATION_DIRECTORY>` - the directory you'd wish to store the backups in (REQUIRED)
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user