* Copy writes beside the destination and renames into place
A daemon killed mid-copy left a truncated file under the destination's
name. The resumed job, or a repeated copy, then found that file already
there and skipped it under the default skip policy, reporting the copy
complete. Local copies now stream or clone into a hidden .<name>.sdpart
sibling and rename it into place once every byte has landed.
Co-authored-by: capy-ai-staging[bot] <305915985+capy-ai-staging[bot]@users.noreply.github.com>
* Stage copies under a random, exclusively created name
A staging name derived from the destination could truncate or remove a
file someone keeps beside it, follow a symlink planted there, and exceed
the filename limit for a long destination name.
Co-authored-by: capy-ai-staging[bot] <305915985+capy-ai-staging[bot]@users.noreply.github.com>
---------
Co-authored-by: capy-ai-staging[bot] <305915985+capy-ai-staging[bot]@users.noreply.github.com>