Thank-you. After installing openrsync(1) (and rsync), files transferred for a bit but failed and dumped core with error 138 (bus error). Maybe a quirk with OpenBSD 7.6, or interaction between simple-mtpfs and the fusefs mount.
In the meantime, after a few retries, the failures are written to a log for a second sweep.
MD5 check helps skip extra copying, but it's overall much slower. It seems okay for a long-running batch job; maybe something we can return to after getting the pictures to display.
The pattern is like
cp ... || \
{ sleep 2; cp ... ; } || \
... || \
... || echo "$file" >> retry.log
Not the best way. It has failed before all four times. Going to let it run overnight to see if it completes.