Package Exports
- @jsonjoy.com/fs-snapshot
- @jsonjoy.com/fs-snapshot/lib/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@jsonjoy.com/fs-snapshot) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@jsonjoy.com/fs-snapshot
File system snapshot - serialize and deserialize file system trees to binary (CBOR) or JSON format.
Installation
npm install @jsonjoy.com/fs-snapshotFeatures
- Serialize entire file system trees into compact binary (CBOR) or JSON snapshots
- Restore file system trees from snapshots
- Supports files, directories, and symbolic links
- Both synchronous and asynchronous APIs
- Works with any Node.js-compatible
fsmodule
Usage
Synchronous API
import * as fs from 'fs';
import { toSnapshotSync, fromSnapshotSync } from '@jsonjoy.com/fs-snapshot';
// Create a snapshot of a directory
const snapshot = toSnapshotSync({ fs, path: '/path/to/directory' });
// Restore the snapshot to a different location
fromSnapshotSync(snapshot, { fs, path: '/path/to/restore' });Asynchronous API
import * as fs from 'fs';
import { toSnapshot, fromSnapshot } from '@jsonjoy.com/fs-snapshot';
// Create a snapshot of a directory
const snapshot = await toSnapshot({ fs: fs.promises, path: '/path/to/directory' });
// Restore the snapshot to a different location
await fromSnapshot(snapshot, { fs: fs.promises, path: '/path/to/restore' });Binary (CBOR) Snapshots
Binary snapshots are more compact and faster to serialize/deserialize:
import * as fs from 'fs';
import { toBinarySnapshotSync, fromBinarySnapshotSync } from '@jsonjoy.com/fs-snapshot';
// Create a binary snapshot
const binary = toBinarySnapshotSync({ fs, path: '/path/to/directory' });
// Restore from binary snapshot
fromBinarySnapshotSync(binary, { fs, path: '/path/to/restore' });JSON Snapshots
JSON snapshots are human-readable and easier to debug:
import * as fs from 'fs';
import { toJsonSnapshotSync, fromJsonSnapshotSync } from '@jsonjoy.com/fs-snapshot';
// Create a JSON snapshot
const jsonSnapshot = toJsonSnapshotSync({ fs, path: '/path/to/directory' });
// Restore from JSON snapshot
fromJsonSnapshotSync(jsonSnapshot, { fs, path: '/path/to/restore' });Snapshot Format
Snapshots are represented as tuples with the following structure:
- Folder:
[0, metadata, { entries }] - File:
[1, metadata, Uint8Array] - Symlink:
[2, { target: string }]
License
Apache-2.0