I'm not convinced it's better. Imagine that you make GET and PUT requests, and plumb the output of the GET into the input of the PUT; you'd end up creating some object. COPY is like doing that, but without the requirement that you move all the bytes across the cluster boundary twice.
If you did the PUT+GET with multiple byteranges on the GET, you'd end up with an object whose contents are a MIME document. The fact that COPY does this already seems exactly right.
I'm not convinced it's better. Imagine that you make GET and PUT requests, and plumb the output of the GET into the input of the PUT; you'd end up creating some object. COPY is like doing that, but without the requirement that you move all the bytes across the cluster boundary twice.
If you did the PUT+GET with multiple byteranges on the GET, you'd end up with an object whose contents are a MIME document. The fact that COPY does this already seems exactly right.