Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
¿Cómo puedo copiar todos los objetos de un bucket de Amazon S3 a otro?
Quiero copiar o mover todos mis objetos de un bucket de Amazon Simple Storage Service (Amazon S3) a otro.
Descripción corta
Para copiar objetos de un bucket de S3 a otro, elige una de las siguientes opciones:
- Uso del comando sync desde Interfaz de la línea de comandos de AWS (AWS CLI)
- Uso de Operaciones por lotes de S3 para los buckets que contienen muchos objetos
El comando sync funciona bien para los buckets que no son muy grandes. Sin embargo, usar el comando sync para copiar buckets grandes con millones de objetos es caro y es posible que se agote el tiempo de espera de la operación de copia. Si se agotan los tiempos de espera al copiar un bucket, utiliza las métricas de Amazon CloudWatch para calcular el tamaño y la cantidad de objetos del bucket. Si tienes millones de objetos en tu bucket de S3, se recomienda utilizar Operaciones por lotes de S3 para copiar los objetos.
Nota: Para copiar objetos de tu bucket a un bucket que pertenezca a otra cuenta de AWS, utiliza AWS Identity and Access Management (IAM) para configurar los permisos entre cuentas. Asegúrate de que tu rol de IAM tenga permisos s3:GetObjectTagging para los objetos de origen y permisos s3:PutObjectTagging para los objetos de destino.
Para aumentar el rendimiento de la sincronización y copiar los objetos con mayor rapidez, realiza una o varias de las siguientes acciones:
- Ajuste de AWS CLI para utilizar una mayor concurrencia
- Divisón del proceso en varios comandos sync en función de los prefijos de los nombres de los objetos
- Organización de la arquitectura de tu bucket de S3 de acuerdo con las prácticas recomendadas
Resolución
**Nota:**Si se muestran errores al usar comandos de AWS CLI, consulta Solución de errores para AWS CLI. Además, asegúrate de utilizar la versión más reciente de AWS CLI.
Copia de objetos entre los buckets de S3
Para copiar objetos de un bucket a otro, sigue estos pasos:
-
Si has archivado objetos de S3 en la clase de almacenamiento Glacier de Amazon Simple Storage Service, restáuralos.
-
Usa el siguiente comando sync, pero reemplaza example_source_bucket y example_target_bucket por los nombres de tus buckets de S3:
aws s3 sync s3://example_source_bucket s3://example_target_bucket
Nota: El comando sync copia solo los objetos que aún no están en el bucket de destino. Para copiar todos los objetos de forma explícita, utiliza el comando cp en lugar del comando sync. Cuando se usa el comando sync en un bucket versionado, solo se copia la versión actual de cada objeto. De forma predeterminada, este comportamiento conserva los metadatos del objeto.
-
(Opcional) Si se agota el tiempo de espera, usa el comando get-metric-statistics de CloudWatch para calcular el tamaño y la cantidad de objetos del bucket.
Para calcular el tamaño del bucket, usa el siguiente comando:
aws cloudwatch get-metric-statistics --namespace AWS/S3 --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=example_source_bucket Name=StorageType,Value=StandardStorage --start-time 2021-05-11T00:00 --end-time 2021-05-11T00:10 --period 3600 --statistics Average --unit Bytes --output json
Para calcular la cantidad de objetos del bucket, usa el siguiente comando:
aws cloudwatch get-metric-statistics --namespace AWS/S3 --metric-name NumberOfObjects --dimensions Name=BucketName,Value=example_source_bucket Name=StorageType,Value=AllStorageTypes --start-time 2021-05-11T00:00 --end-time 2021-05-11T00:10 --period 600 --statistic Average --output json
Si el tamaño del bucket es grande y contiene millones de objetos, no utilices el comando sync. En su lugar, usa Operaciones por lotes de S3 al copiar el bucket.
Importante: Las listas de control de acceso (ACL) no se copian del bucket de origen al bucket de destino cuando usas el comando sync. Si tanto el bucket de origen como el de destino tienen ACL activas, las ACL del objeto de destino conceden FULL_CONTROL a la cuenta que ha realizado la copia. Para solucionar problemas con el comando sync, consulta Why can't I copy an object between two Amazon S3 buckets? (¿Por qué no puedo copiar un objeto entre dos buckets de Amazon S3).
Comprobación de si los objetos se han copiado
Para comprobar que los objetos se han copiado, sigue estos pasos:
- Para comprobar el contenido de los buckets de origen y destino, usa los siguientes comandos ls:
aws s3 ls --recursive s3://example_source_bucket --summarize > bucket-contents-source.txt
Nota: Es posible que se agote el tiempo de espera del comando ls en los buckets grandes. En el caso de los buckets grandes, en lugar del comando ls, usa las métricas de CloudWatch para calcular el tamaño del bucket y el número total de objetos. Sin embargo, dado que las métricas de Amazon CloudWatch solo se obtienen una vez al día, los resultados de CloudWatch podrían diferir de los resultados del comando ls.aws s3 ls --recursive s3://example_target_bucket --summarize > bucket-contents-target.txt
- Utiliza los archivos de texto que se generaron a partir de los comandos ls anteriores para comparar objetos entre los buckets de origen y de destino. El resultado es similar al siguiente ejemplo:
2017-11-20 21:17:39 15362 s3logo.png Total Objects: 1 Total Size: 15362
Nota: Si tienes aplicaciones o cargas de trabajo que realizan llamadas a la API al bucket de origen, actualiza esas llamadas a la API al bucket de destino. Si las escrituras son frecuentes, es posible que tengas que ejecutar comandos sync para corregir las discrepancias entre los buckets de origen y destino.
Información relacionada
Copiar un objeto en un bucket de directorio
How do I troubleshoot an unresponsive list command after I perform a large deletion in Amazon S3? (¿Cómo soluciono los problemas de un comando de lista que no responde después de realizar una eliminación importante en Amazon S3?)
¿Cómo puedo copiar objetos de Amazon S3 de otra cuenta de AWS?
Vídeos relacionados


Contenido relevante
- preguntada hace 2 meseslg...
- preguntada hace un meslg...
- preguntada hace 15 díaslg...
- preguntada hace 4 meseslg...
- OFICIAL DE AWSActualizada hace 4 meses