An open API service indexing awesome lists of open source software.

https://github.com/siyuan-note/dejavu

Data repo for SiYuan
https://github.com/siyuan-note/dejavu

backup e2ee siyuan sync

Last synced: 3 months ago
JSON representation

Data repo for SiYuan

Awesome Lists containing this project

README

        

# DejaVu

[δΈ­ζ–‡](README_zh_CN.md)

## πŸ’‘ Introduction

[DejaVu](https://github.com/siyuan-note/dejavu) is the component of data snapshot and sync for SiYuan.

## ✨ Features

* Git-like version control
* File deduplication in chunks
* Data compression
* AES Encrypted
* Cloud sync and backup

⚠️ Attention

* Folders are not supported
* Permission attributes are not supported
* Symbolic links are not supported

## 🎨 Design

Design reference from [ArtiVC](https://github.com/InfuseAI/ArtiVC).

### Entity

* `ID` Each entity is identified by SHA-1
* `Index` file list, each index operation generates a new index
* `memo` index memo
* `created` index time
* `files` file list
* `count` count of total files
* `size` size of total files
* `File` file, a new file is generated when the actual data file path or content changes
* `path` file path
* `size` file size
* `updated` last update time
* `chunks` file chunk list
* `Chunk` file chunk
* `data` actual data
* `Ref` refers to the index
* `latest` built-in reference, automatically points to the latest index
* `tag` tag reference, manually point to the specified index
* `Repo` repository

### Repo

* `DataPath` data folder path, the folder where the actual data file is located
* `Path` repo folder path, the repo is not stored in the data folder, we need to specify the repo folder path separately

The repo folder layout is as follows:

```text
β”œβ”€indexes
β”‚ 0531732dca85404e716abd6bb896319a41fa372b
β”‚ 19fc2c2e5317b86f9e048f8d8da2e4ed8300d8af
β”‚ 5f32d78d69e314beee36ad7de302b984da47ddd2
β”‚ cbd254ca246498978d4f47e535bac87ad7640fe6
β”‚
β”œβ”€objects
β”‚ β”œβ”€1e
β”‚ β”‚ 0ac5f319f5f24b3fe5bf63639e8dbc31a52e3b
β”‚ β”‚
β”‚ β”œβ”€56
β”‚ β”‚ 322ccdb61feab7f2f76f5eb82006bd51da7348
β”‚ β”‚
β”‚ β”œβ”€7e
β”‚ β”‚ dccca8340ebe149b10660a079f34a20f35c4d4
β”‚ β”‚
β”‚ β”œβ”€83
β”‚ β”‚ a7d72fe9a071b696fc81a3dc041cf36cbde802
β”‚ β”‚
β”‚ β”œβ”€85
β”‚ β”‚ 26b9a7efde615b67b4666ae509f9fbc91d370b
β”‚ β”‚
β”‚ β”œβ”€87
β”‚ β”‚ 1355acd062116d1713e8f7f55969dbb507a040
β”‚ β”‚
β”‚ β”œβ”€96
β”‚ β”‚ 46ba13a4e8eabeca4f5259bfd7da41d368a1a6
β”‚ β”‚
β”‚ β”œβ”€a5
β”‚ β”‚ 5b8e6b9ccad3fc9b792d3d453a0793f8635b9f
β”‚ β”‚ b28787922f4e2a477b4f027e132aa7e35253d4
β”‚ β”‚
β”‚ β”œβ”€be
β”‚ β”‚ c7a729d1b5f021f8eca0dd8b6ef689ad753567
β”‚ β”‚
β”‚ β”œβ”€d1
β”‚ β”‚ 324c714bde18442b5629a84a361b5e7528b14a
β”‚ β”‚
β”‚ β”œβ”€f1
β”‚ β”‚ d7229171f4fa1c5eacb411995b16938a04f7f6
β”‚ β”‚
β”‚ └─f7
β”‚ ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0
β”‚
└─refs
β”‚ latest
β”‚
└─tags
v1.0.0
v1.0.1
```

## πŸ“„ License

DejaVu uses the [GNU AFFERO GENERAL PUBLIC LICENSE, Version 3](https://www.gnu.org/licenses/agpl-3.0.txt) open source license.

## πŸ™ Acknowledgement

* [https://github.com/dustin/go-humanize](https://github.com/dustin/go-humanize) `MIT license`
* [https://github.com/klauspost/compress](https://github.com/klauspost/compress) `BSD-3-Clause license`
* [https://github.com/panjf2000/ants](https://github.com/panjf2000/ants) `MIT license`
* [https://github.com/InfuseAI/ArtiVC](https://github.com/InfuseAI/ArtiVC) `Apache-2.0 license`
* [https://github.com/restic/restic](https://github.com/restic/restic) `BSD-2-Clause license`
* [https://github.com/sabhiram/go-gitignore](https://github.com/sabhiram/go-gitignore) `MIT license`