0.2.0-alpha.6 • Published 3 years ago

md5dumper v0.2.0-alpha.6

Weekly downloads
108
License
ISC
Repository
-
Last release
3 years ago

Features of MD5Dumper

MD5Dumper is a tool that:

  • Can generate a canonical representation of every file under a directory. (the Fsmap format)
  • Can minify Fsmap representations to reduce interchanged data size.
  • Can summarize Fsmap to reduce interchanged data size for initial checksum.
  • Compare minified Fsmap and local directory Fsmap, and detect missing/corrupted/extra files

Motivation behind MD5Dumper

MD5Dumper aims to automatise file system synchronization between distinct ends. Intended specially for auto-patch servers.

Due to the way auto-patch servers interact with clients, data traffic on each check is really important to optimize. MD5Dumper attempts to minimize the size of data interchanged between those checks.

Anatomy of an Fsmap

An Fsmap is a canonical representation of a directory. It is generated by recursively traversing a directory in a sorted way and creating MD5 hashes of every file's content + file's relative path.

declare type Fsmap = FsmapEntry[];

declare type FsmapEntry = {
  index: number; // Index to ensure traverse order
  path?: string; // Relative file system path
  md5: string; // h(relativePath + content)
};

How should Auto-patcher Servers use it?

  1. Once development is done, store built artifacts under a directory. (Let's call it ./target for this example)
  2. Generate fsmap of ./target dir and store it under ./autopatcher/build.fsmap. This file will be used to deserialize on the server side, client won't need this one.
  3. Minify fsmap of ./target and store it under ./autopatcher/build.min.fsmap
  4. Summarize fsmap of ./target and store it under ./autopatcher/summary.md5
  5. Serve those last 2 files for clients to fetch; build.min.fsmap and summary.md5. (They will need them to perform checksum :p)
  6. Fsmap maps Indices to relative file paths. Serve files and their relative paths by indices using the fsmap as a lookup table! Easy peasy!

How should Auto-patcher Clients use it?

  1. Generate fsmap of the local directory
  2. Fetch summary.md5 from the server and compare with local fsmap's summary.
  3. If they match, then the client is up to date! Else, fetch build.min.fsmap from the server.
  4. Check for the differences between build.min.fsmap and local fsmap. The diff functionality of MD5Dumper will yield "invalid local files" and "missing file indices".
  5. Delete invalid local files.
  6. Request every missing file by their indices. Server shall know which file is represented by the indice! Server will respond you with the file blob and it's relative path!
  7. The client should be up to date after all the steps! Easy peasy!
0.2.0-alpha.6

3 years ago

0.2.0-alpha.5

3 years ago

0.2.0-alpha.4

3 years ago

0.2.0-alpha.3

3 years ago

0.2.0-alpha.2

3 years ago

0.2.0-alpha.1

3 years ago

0.1.4

3 years ago

0.1.5

3 years ago

0.1.3

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago