Archive for November, 2009
Cloud Files Object Copy
Nov 19th
Cloud Files does not currently support object copying. However, a simple workaround is to re-upload the file with the new name. Implementing this workaround may be inconvenient, and one may miss some things like ensuring that metadata is updated. I have added a copy feature to my fork of the python-cloudfiles API that takes care of these details. This is a convenience function only and is not officially supported by Rackspace. Keep in mind that billable bandwidth will be used (unless the servicenet flag is set in the API). One option for renaming large files is to spin up a small Cloud server, use the API to copy over servicenet, and spin down the server. At $0.015 per hour, one could run a 256MB instance for 100 hours before equalling the transfer cost for copying one 5GB (Cloud Files max size) file over the billed network.
My python-cloudfiles fork on github: python-cloudfiles
Example script that copies the last file in a container to another container:
1 2 3 4 5 6 7 8 9 10 11 12 13 | import cloudfiles conn = cloudfiles.get_connection(username='myname', api_key='mykey') container_name = 'example_container' another_container = 'example_container2' c = conn.get_container(container_name) l = c.list_objects() o = c.get_object(l[-1]) new_path = '%s/%s' % (another_container, o.name) o.copy_to(new_path) print 'copied', l[-1], 'to', new_path new_list = conn.get_container(another_container).list_objects() print new_list assert o.name in new_list |