dejavu
dejavu copied to clipboard
Data repo for SiYuan
DejaVu
δΈζ
π‘ Introduction
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.
Entity
IDEach entity is identified by SHA-1Indexfile list, each index operation generates a new indexmemoindex memocreatedindex timefilesfile listcountcount of total filessizesize of total files
Filefile, a new file is generated when the actual data file path or content changespathfile pathsizefile sizeupdatedlast update timechunksfile chunk list
Chunkfile chunkdataactual data
Refrefers to the indexlatestbuilt-in reference, automatically points to the latest indextagtag reference, manually point to the specified index
Reporepository
Repo
DataPathdata folder path, the folder where the actual data file is locatedPathrepo 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:
ββ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 open source license.
π Acknowledgement
- https://github.com/dustin/go-humanize
MIT license - https://github.com/klauspost/compress
BSD-3-Clause license - https://github.com/panjf2000/ants
MIT license - https://github.com/InfuseAI/ArtiVC
Apache-2.0 license - https://github.com/restic/restic
BSD-2-Clause license - https://github.com/sabhiram/go-gitignore
MIT license