amazon-s3 - precios - precio de amazon s3
Duplicación más rápida de cubos s3 (6)
He estado tratando de encontrar una mejor herramienta de línea de comandos para duplicar cubos que s3cmd . s3cmd puede duplicar los depósitos sin tener que descargar y cargar cada archivo. El comando que normalmente ejecuto para duplicar depósitos utilizando s3cmd es:
s3cmd cp -r --acl-public s3://bucket1 s3://bucket2
Esto funciona, pero es muy lento ya que copia cada archivo a través de API de a uno por vez. Si s3cmd pudiera correr en modo paralelo, estaría muy feliz.
¿Hay otras opciones disponibles como herramientas de línea de comandos o código que las personas usan para duplicar depósitos que son más rápidos que s3cmd?
Editar: Parece que s3cmd-modification es exactamente lo que estoy buscando. Lástima que no funciona. ¿Hay más opciones?
AWS CLI parece hacer el trabajo a la perfección, y tiene la ventaja de ser una herramienta oficialmente compatible.
aws s3 sync s3://mybucket s3://backup-mybucket
http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html
Admite transferencias simultáneas por defecto. Ver http://docs.aws.amazon.com/cli/latest/topic/s3-config.html#max-concurrent-requests
Para transferir rápidamente una gran cantidad de archivos pequeños, ejecutar desde una instancia EC2 para disminuir la latencia y aumentar max_concurrent_requests para reducir el impacto de la latencia. p.ej
aws configure set default.s3.max_concurrent_requests 200
Como se trata del primer éxito de Google en este tema, agregar información adicional.
''Cyno'' creó una versión más nueva de s3cmd-modification, que ahora admite la sincronización paralela de cubo a cubo. Exactamente lo que estaba esperando también.
La solicitud de extracción está en https://github.com/pcorliss/s3cmd-modification/pull/2 , su versión en https://github.com/pearltrees/s3cmd-modification
Intenté clonar dos cubos usando la consola web de AWS, el s3cmd y la AWS CLI. Aunque estos métodos funcionan la mayor parte del tiempo, son dolorosamente lentos.
Luego encontré s3s3mirror , una herramienta especializada para sincronizar dos cubos S3. Es multiproceso y mucho más rápido que los otros enfoques que he probado. Rápidamente moví GB de datos de una región de AWS a otra.
Compruébelo en github.com/cobbzilla/s3s3mirror , o descargue un contenedor Docker de https://registry.hub.docker.com/u/pmoust/s3s3mirror/
No conozco ninguna otra herramienta de línea de comandos S3, pero si no aparece nada aquí, podría ser más fácil escribir la tuya.
Elija el idioma y el SDK / kit de herramientas de Amazon que prefiera. Entonces solo necesita listar / recuperar el contenido del cubo fuente y copiar cada archivo (en paralelo, obviamente)
Al ver la fuente de s3cmd-modification (y admito que no sé nada sobre python), parece que no han s3cmd-modification el código de cubo a cubo, pero tal vez podrías usar el código paralelo de carga / descarga estándar como punto de partida para hacer esto.
Para una solución adhoc use aws cli
para sincronizar entre cubetas:
aws s3 sync
velocidad de aws s3 sync
depende de:
- latencia para una llamada API al punto final S3
- cantidad de llamadas API realizadas en concurrentes
Para aumentar la velocidad de sincronización:
- ejecutar aws s3 sync
desde una instancia de AWS (c3.large en FreeBSD está bien ;-))
- actualizar ~ / .aws / config con:
- max_concurrent_requests = 128
- max_queue_size = 8096
con las siguientes configuraciones y el tipo de instancia, pude sincronizar el segmento (309 GB, archivos 72K, us-east-1) en 474 segundos.
Para una solución más genérica, considere: replicación entre regiones AWS DataPipeLine o S3.
Si no te importa usar la consola de AWS, puedes:
- Seleccione todos los archivos / carpetas en el primer segmento
- Haz clic en Acciones> Copiar
- Crea un nuevo cubo y selecciónalo
- Haz clic en Acciones> Pegar
Todavía es bastante lento, pero puedes dejarlo y dejar que haga lo suyo.