You consolidate a photo library by moving files from one drive to another. That is also when you can lose them: a cable that comes loose, a full drive, a file rewritten by another program during the copy. Obscura Trace handles this moment the way backup software would. It never moves a file: it copies it, verifies the copy, and only then removes the source.
Nothing runs without a plan
Before writing anything, the Transfer Center computes the exact list of operations. A dry run can be read without writing anything. A real plan is then compared with that dry run. A dry run is never executed. Execution can only be reached from the confirmation of a real plan, which covers the whole plan.
When a file with the same name already exists at the destination, the default strategy is “Comparer” (Compare). Identical content is skipped, different content goes to review. Nothing is ever silently overwritten.
Four steps for each file
During execution, for each file, the app:
- writes the copy under a temporary name,
.obscura-part, on the destination drive; - computes the SHA-256 checksum of the bytes read during the copy, then reads the copy back from disk to verify it;
- gives the copy its final name only once verified, never overwriting a file that appeared in the meantime;
- for a move, removes the source only after every copy in its unit is verified. A RAW is never separated from its XMP.
Each step is written to the journal before it is carried out. If the Mac shuts down in the middle, the journal says exactly which operation was open.
A source is removed only if it has not changed
Between the copy and the removal, a program may have rewritten a tag in the source, or the copy may have disappeared from the destination. In both cases the source stays in place. The Activity screen reports it (“source(s) conservée(s) : retrait refusé”, source(s) kept: removal refused) and the transfer continues with the next files.
The source must still be the one that was copied: same size, same modification date, same file on the same drive. Before a permanent deletion, it is also read back in full and compared with its copy’s checksum.
Before the first write, the app also checks that the drive mounted at the destination is the one in the plan, recognized by its volume identifier, not just a drive with the same name. Otherwise the transfer stops without writing anything.
Trash by default
The sources of a move go to their drive’s Trash, which the app never empties. Permanent deletion is off by default. To use it, you turn it on in Settings, then consent to it for each transfer by checking “Je reconnais que cette opération est irréversible.” (I acknowledge that this operation is irreversible.).
Interrupted, it resumes
A full or unplugged drive stops the transfer cleanly. Nothing resumes without you. Resuming reads the journal, undoes the operation left open by removing its partial copy, then runs the plan again. What is already copied and verified is not copied again.
After a crash, the Dashboard flags the transfer as “à reprendre” (to resume) at the next launch.
What it does not do
A transfer has no pause or cancel in the current release: if interrupted, it is resumed. Quitting the app during a transfer asks for confirmation. Verification also has a cost: reading back every copy takes time, and that is deliberate. On an irreplaceable archive, a slower copy is better than a silent loss.
The screen-by-screen detail is in the Transfer Center chapter of the guide.