-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add LICENSE.md
Showing
2 changed files
with
89 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
Copyright 2024 cout970 | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
# InnerFS | ||
|
||
InnerFS is a command line utility to mount with FUSE a virtual file system that uses a sqlite database to store metadata | ||
and a storage backend to store the file contents. | ||
|
||
Several use cases can benefit from InnerFS: | ||
|
||
- Store files in S3 with encryption and deduplication | ||
- Keep all files in a single file, while still being able to access them as if they were in a directory | ||
- Store files in a SQL database that allows querying with SQL to generate statistics or performing complex searches | ||
- Reduce storage space by deduplicating and compressing files | ||
- Provide ease access to files while keeping them encrypted, allowing to safely sync the encrypted files to the cloud | ||
|
||
### Backend | ||
|
||
Filesystem: Is the most basic backend, stores files in the specific path. | ||
|
||
Sqlar: Stores files in a SQLite database, see [sqlar](https://sqlite.org/sqlar.html) for more information. | ||
|
||
S3: Stores files in an S3 compatible storage. | ||
|
||
### Features | ||
|
||
- File de-duplication based on content | ||
- File encryption with AES-256-GCM | ||
- Metadata sqlite database that can be queried with SQL | ||
- File name mangling with the content SHA512 hash | ||
|
||
### Usage | ||
|
||
- Generate a configuration file | ||
|
||
```bash | ||
innerfs generate-config | ||
``` | ||
|
||
Will generate a configuration file `config.yml` in the current directory. | ||
|
||
- Mount the filesystem | ||
|
||
```bash | ||
innerfs mount | ||
``` | ||
|
||
Will mount the filesystem in the path specified in the configuration file. To unmount the filesystem use `umount` with | ||
the mount point. | ||
|
||
- Nuke all data | ||
|
||
```bash | ||
innerfs nuke | ||
``` | ||
|
||
Will remove all data from the filesystem, including the metadata database. Handle with care. | ||
|
||
- Export index as JSON/YAML | ||
|
||
```bash | ||
innerfs export-index --format json | ||
``` | ||
|
||
Will generate a JSON file with a hierarchical representation of the filesystem (without the file contents). | ||
|
||
- Export files | ||
|
||
```bash | ||
innerfs export-files --path ./output --format zip | ||
``` | ||
|
||
Will export all files in the filesystem to the specified path in the specified format. Supports `zip`, `tar` | ||
and `directory`. | ||
|
||
### Configuration | ||
|
||
The default configuration file contains comments that explain the options, can be seen [here](./src/default_config.yml). | ||
|
||
### Planned features | ||
|
||
- [ ] File compression | ||
- [ ] File verification | ||
- [ ] Sync between instances | ||
- [ ] Encryption of the metadata database |