https://github.com/alekseibalan/usfs
USFS - unsigned short file system
https://github.com/alekseibalan/usfs
cryptography docker docker-hub dynamodb file-system ftp-server mongodb quality usfs
Last synced: about 1 month ago
JSON representation
USFS - unsigned short file system
- Host: GitHub
- URL: https://github.com/alekseibalan/usfs
- Owner: alekseibalan
- License: apache-2.0
- Created: 2020-08-01T13:54:06.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2023-04-02T13:17:48.000Z (about 3 years ago)
- Last Synced: 2026-04-13T01:29:04.939Z (2 months ago)
- Topics: cryptography, docker, docker-hub, dynamodb, file-system, ftp-server, mongodb, quality, usfs
- Language: Java
- Homepage:
- Size: 2.62 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# USFS - unsigned short file system
Let's trip back to the 80s and save our modern files in [8.3 filename convention](https://en.wikipedia.org/wiki/8.3_filename).
Calculate SHA-256 of file name, take 16 bits of it and use this unsigned short as a new name. And one more file for metadata (original file name, modification time)
Octal encoding give file names 000000 - 177777 and excitingly high chance of collision.
[USFS release notes and roadmap](https://github.com/abalanonline/usfs/releases)
## Tests:
1. small - 799 files, 46 folders, 2.14 MiB - spring-core-4.3.25.RELEASE.jar file content
1. fat - 30 files, 1 folder, 1 GiB - hi-res pictures, jdk and idea archives
Write (seconds) / Read (after write, presumably cached, seconds) / Delete (seconds)
* file system - s:44/17/19, f:7/4/0
* mongo gridfs - s:204/33/36, f:44/26/1
* mongo gridusfs - s:213/33/39, f:35/25/1
* in-memory - s:21/16/16, f:6/3/0
## Usage example:
```console
sudo apt install dosfstools
dd if=/dev/zero of=/tmp/usfs.dos bs=1M count=1200
sudo mkfs.msdos /tmp/usfs.dos
mkdir /tmp/usfs
sudo mount -t msdos -o loop,umask=000,check=s,tz=UTC /tmp/usfs.dos /tmp/usfs
sudo docker run -d --rm --name usfs -v /tmp/usfs:/mnt -p 21:21 -p 1024:1024 abalanonline/usfs
```