Server-side Object Copy in OpenStack storage

July 24, 2010 at 10:05 pm
filed under Cloud Files, openstack, programming

OpenStack storage (codenamed swift) supports server-side object copy.

Suppose you upload a file with the wrong object name or you needed to move some objects to another container. Without a server-side copy feature, you would need to reupload the same content and delete the existing object. With server-side object copy, you can save the step of re-uploading the content and thus also save the associated bandwidth charges, if any were to apply.

There are two ways to copy an existing object to another object in swift. One, do a PUT to the new object (the target) location, but add the “X-Copy-From” header to designate the source of the data. The header value should be the container and object name of the source object in the form of “/container/object”.

The second way to do an object copy is similar. This time, do a COPY to the existing object, and include the “Destination” header to specify the target of the copy. The header value is the container and new object name in the form or “/container/object”.

With both of these methods, the destination container must exist before attempting the copy.

If you were wanting to perform a move of the objects rather than a copy, you would need to send a DELETE request to the old object. A move simply becomes a COPY + DELETE.

1 comment

RSS / trackback

respond

  1. some thoughts » Cloud Files Object Copy

    on July 25, 2010 at 11:59 am

    [...] now supported server-side in the latest version of Cloud Files (http://launchpad.net/swift). See my newer post for more [...]