# engram
<img src="https://img.shields.io/crates/v/engram?color=b7bdf8&labelColor=363a4f&style=for-the-badge&logo=rust&logoColor=white" height="22">
<img src="https://img.shields.io/gitlab/last-commit/mbednarek360/engram?color=a6da95&labelColor=363a4f&style=for-the-badge&logo=gitlab&logoColor=white" height="22">
<img src="https://img.shields.io/gitlab/stars/mbednarek360/engram?color=eed49f&labelColor=363a4f&style=for-the-badge&logo=stackblitz&logoColor=white" height="22">
<br><br>
A fast and atomic version control system for portable file backups
## Usage
Initialize a repository with data:
`$ engram init ~/repo ~/data`
Update a repository with new data:
`$ engram update ~/repo ~/data 300`
Pull historical repository data:
`$ engram pull ~/repo ~/out 1732406830`
Revert updates to a repository:
`$ engram revert ~/repo 1732406830`
> :information: See `engram --help` for more detailed information.
## Current Limitations
- duplicate / copied files have data re-added
- renamed directories can create big index files
- moved files that are modified in same patch are considered new instead of delta
- cannot process files bigger than available system memory
- will not preserve file permissions