Recover Data from Multiple Sources
When evidence comes from multiple nodes, old copies, pre/post-repair files or later image submissions, register and recover sources through PDU cases. The following sections describe source registration, batch execution and resume in detail.
I. Create the Recovery Case
ds case create unknown "recover-surviving-data" UTC;
ds case note incident_time unknown;Case creation permits initially unknown versions, incident time and source states. Successful registration records evidence; it is not completed parsing or recovery.
II. Register Each Source
param sourceversion 8.0.0;
param sourcekind copy;
param sourcefrozen true;
ds case source add directory /recovery-input/mongodb/source/dbpath node-directory;
ds case source add wt_file /recovery-input/mongodb/source/collection-source.wt surviving-file;
param sourcekind imagecopy;
param extentmap /recovery-input/mongodb/source/extents.json;
ds case source add image /recovery-input/mongodb/source/image-source mapped-image;Each registration freezes current parsing parameters. Repeated submissions with matching identity, stat and configuration reuse a source ID. Register changed sources or configuration with a new ID while retaining old results.
III. Run Independent Recovery
ds case run all all;
ds case run 2 deep;
ds case run 2 deep-fields;
ds case report;Take source IDs from current registrations. Directories support current/history/all. Files and images support all/deep/deep-fields/deep-structures. deep rejects directory sources; register a concrete file or image first.
Each source uses its frozen parameters. Missing, unfrozen or unreadable sources retain original errors while other sources continue. The batch returns non-success without hiding failures.
IV. Pause and Continue Recovery
ds case pause;
ds case report;
ds case resume;
ds case run all all;pause stops the case and registered child tasks. resume clears only paired STOP markers created by this command, retaining manually created STOP markers. resume permits continuation; run still starts execution.
V. Handle Unfinished Output Units
ds case resolve 2 deep;
ds case run 2 deep;
ds case resolve 1 current appdb.orders;
ds case run 1 current;resolve abandons the selected unfinished output and keeps completed results. Directory mode requires a namespace. ACTIVE units are not automatically read, discarded or marked complete.
VI. View Summary Results
ds case status;
ds case report;Identical _id, namespace or definitions do not trigger cross-source deduplication, overwrite or business merging. dump/rollback/config/log/platform/unknown can be registered as evidence. Sources lacking content adapters report unsupported explicitly; registration is not recovery.
Output Files
- ./incident.sqlite3: sources, submission events and independent attempt states.
- ./source-<id>/<mode>-<format>: independent child tasks and checkpoints.
- Matching child directories under launch cwd: independent outputs for each source, mode and format.
Reports read native metadata only and can be viewed during recovery without reading source or exported bodies. Inconsistent native records reject continuation without automatic evidence repair.
Retain native success, failure, unresolved dependencies, original errors and checkpoints. Completed-run resume reads native records and file metadata without checking exported content for counts, JSON, UTF-8, hashes, redecoding or trial import.