2010-08-04 16 views
8

Tan simple como suena, parece una tarea extraordinariamente complicada.¿Cómo se cambia el nombre de una carpeta en un depósito en S3?

+0

@John, ¿qué tal si editaste? – Trip

+0

Encontré CloudBerry para Windows. Pero odio ventanas. Alguien sabe una alternativa Mac? – Trip

+0

Tengo un script que hará esto: envíeme un correo electrónico (zach a longtailvideo dot com) y lo reenviaré. –

Respuesta

11

Si usas la gema aws-s3, el siguiente código cambiará el nombre de la carpeta OLD_FOLDER_NAME en el contenedor BUCKET_NAME a NEW_FOLDER_NAME:

bsize = OLD_FOLDER_NAME.size 
bucket = AWS::S3::Bucket.find(BUCKET_NAME) 
bucket.objects({:prefix=>OLD_FOLDER_NAME}).each do |o| 
    AWS::S3::S3Object.rename(o.key, NEW_FOLDER_NAME + o.key[bsize..-1], BUCKET_NAME) 
end 

Eso es todo. Las carpetas no son objetos reales, por lo que todo lo que tienes que hacer es cambiar el nombre de todos los objetos que terminan en esa ruta específica a la nueva ruta. La carpeta virtual se renombrará como resultado.

+0

Esto renombra la carpeta, sin embargo, si el contenido de la carpeta era público, esos permisos parecen perderse durante el cambio de nombre. – jpwynn

+0

agregó permiso explícito como 4º parámetro para el cambio de nombre() establece los permisos: access =>: public_read, aunque es probable que haya alguna manera de conservar los permisos durante el cambio de nombre – jpwynn

1

¡Usa BucketExplorer! ¡Esta es una magnífica aplicación! Puedes hacer casi cualquier cosa que siempre quisiste hacer con tu s3 en una GUI muy fácil de entender

+0

Honestamente, todavía estoy abierto para ideas, pero esta fue la mejor opción que encontré. – Trip

+0

Estoy de acuerdo si no fuera por el hecho de que esta solución requiere que se instale Java7, lo que puede introducir un gran cambio en el nivel del sistema simplemente para cambiar el nombre de una carpeta. Lástima que no lo vuelvan a escribir como una aplicación "real" sin el enorme dolor de cabeza de las dependencias de Java. – jpwynn

8

Parece que AWS Command Line Interface es la nueva forma de hacer cosas como esta. Al usarlo, usted puede cambiar el nombre de una carpeta de la siguiente manera:

aws s3 mv --recursive s3://bucketname/oldfoldername s3://bucketname/newfoldername 

Asegúrate de empezar por la opción --dryrun para asegurarse de que va a hacer lo que creo que va a hacer.

1

Si usa la consola de administración S3, puede cortar y pegar. Vaya a la carpeta que desee, haga clic en Ctrl + A, luego haga clic en Acciones> Cortar. Cree su nueva carpeta y haga clic en Acciones> Pegar.

Cuestiones relacionadas