Todos los productos
Search
Centro de documentos

Object Storage Service:Copy objects using the cp command

Última actualización: Sep 03, 2026

Utilice el comando cp para copiar archivos de un bucket de origen a un bucket de destino en la misma región, o a otro directorio dentro del mismo bucket.

Precauciones

  • El comando cp no admite la copia de archivos entre cuentas o regiones. Para copiar o migrar archivos entre cuentas o regiones, utilice Data Online Migration.

  • Este comando solo copia archivos completos y no admite la copia parcial de archivos.

  • A partir de la versión 1.6.16 de ossutil, puede usar ossutil como nombre del binario en la línea de comandos sin necesidad de renombrarlo. En versiones anteriores a la 1.6.16, debe renombrar el binario para que coincida con su sistema operativo. Para obtener más información, consulte Command-line tool ossutil command reference.

Permisos

De forma predeterminada, solo la cuenta de Alibaba Cloud tiene permiso para ejecutar todas las operaciones de API. Para ejecutar este comando, un usuario RAM o un rol RAM debe recibir los permisos necesarios por parte de la cuenta de Alibaba Cloud o de un administrador mediante una RAM Policy o una Bucket Policy.

Acción de API

Descripción

oss:GetObject

Copiar un objeto entre buckets en la misma región.

oss:PutObject

oss:GetObjectVersion

Opcional. Este permiso es necesario para copiar una versión específica de un objeto.

oss:GetObjectTagging

Opcional. Estos permisos son necesarios si la operación de copia implica etiquetado de objetos.

oss:PutObjectTagging

oss:GetObjectVersionTagging

Opcional. Este permiso es necesario si la operación de copia implica etiquetas de una versión específica del objeto.

kms:GenerateDataKey

Opcional. Estos permisos son necesarios si la operación de copia implica cifrado del lado del servidor con KMS.

kms:Decrypt

Sintaxis del comando

ossutil cp cloud_url cloud_url [options]

La siguiente tabla describe los parámetros y las opciones.

Parámetro

Descripción

cloud_url

Las rutas de OSS de origen y destino. El formato es oss://bucketname/objectname. Por ejemplo, para copiar el objeto de origen srcobject.jpg al objeto de destino destobject.jpg en el mismo bucket llamado examplebucket, establezca la ruta de origen como oss://examplebucket/srcobject.jpg y la ruta de destino como oss://examplebucket/destobject.jpg.

-r, --recursive

Realiza una operación recursiva. Si especifica esta opción, ossutil ejecuta la operación en todos los objetos coincidentes del bucket. De lo contrario, la operación se realiza únicamente en el objeto especificado.

-f --force

Fuerza la operación sin solicitar confirmación.

-u,--update

Copia un objeto solo si el objeto de destino no existe, o si la fecha de última modificación del objeto de origen es posterior a la del objeto de destino.

--disable-ignore-error

No ignora errores durante las operaciones por lotes.

--only-current-dir

Copia únicamente los archivos del directorio actual. Se ignoran los subdirectorios y los archivos que contienen.

-bigfile-threshold

El umbral de tamaño para la copia reanudable. Unidad: bytes.

Valor predeterminado: 100 MB

Valores válidos: 0 a 9223372036854775807

--part-size

El tamaño de parte. Unidad: bytes. De forma predeterminada, ossutil calcula un tamaño de parte adecuado según el tamaño del archivo.

Valores válidos: 1 a 9223372036854775807

--checkpoint-dir

El directorio que almacena la información de punto de control para una copia reanudable. Si falla una copia reanudable, ossutil crea automáticamente un directorio llamado .ossutil_checkpoint para registrar la información del punto de control. Este directorio se elimina después de que la copia reanudable finaliza correctamente. Si especifica esta opción, asegúrese de que el directorio indicado pueda eliminarse.

--encoding-type

El tipo de codificación del nombre de archivo. Establezca el valor en url. Si no especifica esta opción, el nombre de archivo no se codifica.

--include

Incluye todos los archivos que cumplen con la condición especificada.

--exclude

Excluye todos los archivos que cumplen con la condición especificada.

--meta

Los metadatos del archivo. El formato es header:value#header:value. Ejemplo: Cache-Control:no-cache#Content-Encoding:gzip. Para obtener más información sobre los metadatos, consulte set-meta (Manage object metadata).

--acl

La lista de control de acceso (ACL) del archivo. Valores válidos:

  • default (predeterminado): El objeto hereda la ACL del bucket.

  • private: Solo el propietario del bucket tiene permisos de lectura y escritura sobre el objeto. Otros usuarios no pueden acceder al objeto.

  • public-read: Solo el propietario del bucket tiene permisos de escritura sobre el objeto. Todos los demás usuarios, incluidos los anónimos, tienen permisos de lectura. Esto puede provocar fugas de datos y cargos inesperados. No se recomienda otorgar este permiso a menos que sea necesario.

  • public-read-write: Todos los usuarios, incluidos los anónimos, tienen permisos de lectura y escritura sobre el objeto. Esto puede provocar fugas de datos y cargos inesperados. Utilice este permiso con precaución.

--disable-crc64

Deshabilita la verificación de redundancia cíclica de 64 bits (CRC-64) para los datos. De forma predeterminada, CRC-64 está habilitado para la transferencia de datos en ossutil.

--payer

El método de pago para la solicitud. Si desea que el solicitante pague el tráfico y las solicitudes al acceder a recursos en la ruta especificada, establezca esta opción en requester.

-j,--jobs

El número de tareas simultáneas para operaciones por lotes. Valor predeterminado: 3. Valores válidos: 1 a 10000.

--parallel

El número de tareas simultáneas para la operación de un solo archivo. Valores válidos: 1 a 10000. Si no establece esta opción, ossutil determina el valor según el tipo de operación y el tamaño del archivo.

--version-id

Copia una versión específica de un archivo. Esta opción solo está disponible para buckets con versionado habilitado.

--start-time

Una marca de tiempo UNIX. Si especifica esta opción, se ignoran los objetos cuya última actualización sea anterior a esta hora.

Nota

Solo ossutil 1.7.18 y versiones posteriores admiten este parámetro. Para obtener más información sobre cómo actualizar, consulte update (Upgrade ossutil).

--end-time

Una marca de tiempo UNIX. Si especifica esta opción, se ignoran los objetos cuya última actualización sea posterior a esta hora.

Nota
  • Si especifica tanto start-time como end-time, el comando de copia se ejecuta únicamente para archivos cuya última modificación ocurrió entre las horas de inicio y fin especificadas.

  • Solo ossutil 1.7.18 y versiones posteriores admiten este parámetro. Para obtener más información sobre cómo actualizar la versión, consulte update (Upgrade ossutil).

Para obtener más información sobre otras opciones comunes de este comando, consulte Common options.

Si la concurrencia predeterminada no satisface sus requisitos de rendimiento, puede ajustar las opciones -j, --jobs y --parallel para modificar el desempeño. De forma predeterminada, ossutil calcula el valor de parallel según el tamaño del archivo. Cuando transfiere archivos grandes por lotes, la concurrencia real es el valor de jobs × el valor de parallel.

  • Si los recursos (como red, memoria y CPU) de la instancia ECS o del servidor que ejecuta el comando son limitados, se recomienda reducir la concurrencia a un valor menor que 100. Si los recursos no se aprovechan por completo, puede aumentar la concurrencia según sea necesario.

  • Una concurrencia alta puede disminuir el rendimiento o incluso causar errores EOF debido a la sobrecarga por cambio de hilos y la competencia de recursos. Ajuste las opciones -j, --jobs y --parallel según los recursos reales de su máquina. Al realizar pruebas de estrés, se recomienda comenzar con una concurrencia baja e incrementarla gradualmente hasta encontrar el valor óptimo.

Ejemplos de uso

Los siguientes ejemplos corresponden a un sistema Linux. Modifique los parámetros según su sistema operativo y entorno real. Los ejemplos asumen el siguiente entorno:

  • Bucket de origen: examplebucket1

  • Directorio de origen 1 en el bucket de origen: srcfolder1

  • Directorio de origen 2 en el bucket de origen: srcfolder2

  • Bucket de destino: examplebucket2

  • Directorio de destino en el bucket de destino: desfolder

Copiar un solo archivo

Copie un archivo de un directorio a otro dentro del mismo bucket y renombre el archivo como example.txt.

ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder2/example.txt                             

Copiar varios archivos por lotes

Al copiar archivos, si la ruta de origen no termina con una barra diagonal (/), todos los archivos que coinciden con el prefijo especificado se copian al bucket de destino. Si la ruta de origen termina con una barra diagonal (/), solo los archivos del directorio especificado se copian al bucket de destino.

Suponga que el directorio srcfolder1 en el bucket de origen examplebucket1 contiene los siguientes archivos:

srcfolder1/exampleobject1.txt
srcfolder1/exampleobject2.png
srcfolder1/dir1/
srcfolder1/dir1/exampleobject3.jpg
srcfolder1/dir2/
srcfolder1/dir2/exampleobject4.jpg
  • La ruta de origen no termina con una barra diagonal (/)

    ossutil cp oss://examplebucket1/srcfolder1  oss://examplebucket2 -r

    Una vez completada la copia, los siguientes archivos se agregan al bucket de destino examplebucket2:

    srcfolder1/exampleobject1.txt
    srcfolder1/exampleobject2.png
    srcfolder1/dir1/
    srcfolder1/dir1/exampleobject3.jpg
    srcfolder1/dir2/
    srcfolder1/dir2/exampleobject4.jpg
  • La ruta de origen termina con una barra diagonal (/).

    ossutil cp oss://examplebucket1/srcfolder1/  oss://examplebucket2 -r

    Una vez completada la copia, los siguientes archivos están presentes en el bucket de destino examplebucket2:

    exampleobject1.txt
    exampleobject2.png
    dir1/
    dir1/exampleobject3.jpg
    dir2/
    dir2/exampleobject4.jpg
  • Copiar archivos incrementales

    Durante una copia por lotes, si especifica la opción --update, ossutil copia un objeto solo si el objeto de destino no existe o si la fecha de última modificación del objeto de origen es posterior a la del objeto de destino. El comando es el siguiente:

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/path2/ -r --update

    Puede utilizar esta opción para realizar una copia incremental, omitiendo los archivos que ya se copiaron correctamente al reintentar una copia por lotes fallida.

  • Copiar solo archivos en el directorio actual e ignorar subdirectorios

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder2/ --only-current-dir -r

Copiar archivos dentro de un rango de tiempo específico

Copie únicamente los archivos en srcfolder1 cuya última modificación ocurrió entre las 10:09:18 del 31 de octubre de 2023 (UTC+8) y las 12:55:58 del 31 de octubre de 2023 (UTC+8).

ossutil cp -r oss://examplebucket1/srcfolder1/ oss://examplebucket2/path2/ --start-time 1698718158 --end-time 1698728158

Copiar archivos que cumplen condiciones específicas

Utilice los parámetros --include y --exclude para copiar solo archivos que cumplen condiciones específicas.

  • Copiar todos los archivos que no tienen formato JPG.

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/desfolder/ --exclude "*.jpg" -r
  • Copiar todos los archivos cuyos nombres contienen abc pero que no tienen formato JPG ni TXT

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/desfolder/ --include "*abc*" --exclude "*.jpg" --exclude "*.txt" -r

Copiar un archivo y modificar sus metadatos

Utilice la opción --meta para modificar los metadatos del objeto. El formato es header:value#header:value....

ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/ --meta=Cache-Control:no-cache

Copiar un archivo y especificar el modo de pago por solicitante

Copie un archivo de un bucket de origen a un bucket de destino y especifique el modo de pago por solicitante.

ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/desfolder/  --payer=requester

Copiar un archivo y cambiar su clase de almacenamiento

Al sobrescribir un objeto, puede agregar la opción --meta para modificar su clase de almacenamiento. Las clases de almacenamiento compatibles son:

  • Standard: Standard

  • IA: Infrequent Access

  • Archive: Archive Storage

  • ColdArchive: Cold Archive

  • DeepColdArchive: Deep Cold Archive

Para obtener más información sobre las clases de almacenamiento, consulte 存储类型.

Importante

De forma predeterminada, cuando utiliza la opción --meta para cambiar la clase de almacenamiento, los metadatos personalizados existentes del objeto se sobrescriben. Para conservar los metadatos personalizados existentes al cambiar la clase de almacenamiento, primero debe usar la opción x-oss-metadata-directive:COPY para retain the metadata, y luego change the storage class.

Sobrescribir metadatos personalizados existentes del objeto

  • Cambiar la clase de almacenamiento de un archivo específico a Archive Storage

    ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder1/examplefile.txt --meta X-oss-Storage-Class:Archive
  • Cambiar la clase de almacenamiento de todos los archivos en una carpeta específica a Standard

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder1/ --meta X-oss-Storage-Class:Standard -r

Conservar metadatos personalizados existentes del objeto

  • Conservar los metadatos de un solo archivo existente.

    ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder1/examplefile.txt --meta x-oss-metadata-directive:COPY
  • Conservar los metadatos de varios archivos existentes.

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder1/ --meta x-oss-metadata-directive:COPY -r -f 
Importante
  • Cuando utiliza el comando cp para cambiar la clase de almacenamiento de un objeto, se le cobra por solicitudes PUT según la clase de almacenamiento de origen del objeto. Los cargos se facturan al bucket de destino.

  • Si convierte un objeto a la clase de almacenamiento Infrequent Access, Archive, Cold Archive o Deep Cold Archive y el objeto se almacena durante un periodo inferior a la duración mínima de almacenamiento, se aplica un cargo por eliminación anticipada. Para obtener más información, consulte Storage fees.

  • Para convertir un objeto de Archive Storage, Cold Archive o Deep Cold Archive a Standard o Infrequent Access mediante el comando cp, primero debe restaurar el objeto. Para restaurar el objeto, utilice el comando restore (restore an object). Una vez restaurado el objeto, puede usar el comando cp para cambiar su clase de almacenamiento. Sin embargo, si real-time access of Archive objects está habilitado, puede cambiar la clase de almacenamiento de objetos Archive Storage sin restaurarlos.

  • Cuando utiliza el comando cp para cambiar la clase de almacenamiento de un archivo mayor a 100 MB, ossutil calcula un tamaño de parte adecuado según el tamaño del archivo de forma predeterminada. Si el tamaño automático de parte no satisface sus necesidades, puede usar la opción --part-size para especificar un tamaño de parte. Asegúrese de que el número de partes no exceda 10,000.

Copiar un archivo y establecer etiquetas

Al sobrescribir un archivo, puede agregar la opción --tagging para añadir o modificar etiquetas de objeto. Separe múltiples etiquetas con ampersands (&). El comando es el siguiente:

ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/ --tagging "abc=1&bcd=2&……"

Para obtener más información sobre el etiquetado de objetos, consulte object-tagging (Object tagging).

Copiar un archivo y configurar el cifrado del lado del servidor

Puede especificar un método de cifrado del lado del servidor para cifrar un archivo al copiarlo a un bucket. Para obtener más información sobre el cifrado del lado del servidor, consulte Server-side encryption.

  • Copiar un archivo y especificar AES256 como método de cifrado

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/srcfolder2/ --meta=x-oss-server-side-encryption:AES256
  • Copiar un archivo y especificar KMS como método de cifrado

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/desfolder/ --meta=x-oss-server-side-encryption:KMS
    Importante

    Cuando utiliza KMS para el cifrado, OSS llama a KMS para generar una clave maestra para el archivo. Esta acción genera un costo por llamadas a la API de KMS. Para obtener más información, consulte KMS billing.

  • Copiar un archivo y especificar el ID de CMK para el cifrado KMS.

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/desfolder/ --meta=x-oss-server-side-encryption:KMS#x-oss-server-side-encryption-key-id:7bd6e2fe-cd0e-483e-acb0-f4b9e1******
Nota

La opción --meta aplica a ossutil 1.x. Para ossutil 2.x, utilice el siguiente comando en su lugar:

ossutil api copy-object --server-side-encryption SM4

Restaurar una versión histórica de un archivo

Después de habilitar el versionado para un bucket, los objetos sobrescritos y eliminados se guardan como versiones históricas. Puede agregar la opción --version-id al comando cp para restaurar una versión histórica, lo cual sobrescribe la versión actual.

Primero, utilice el comando ls --all-versions para recuperar todos los ID de versión del objeto. Luego, use la opción --version-id para copiar una versión específica.

Nota

La opción --version-id solo puede utilizarse en buckets con versionado habilitado. Para obtener más información sobre el comando para habilitar el versionado en un bucket, consulte bucket-versioning (Versioning).

ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/ --version-id  CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3MDRk

Copia entre cuentas

Utilice las opciones comunes -e, -i y -k para copiar el archivo srcobject.png desde el directorio raíz del bucket de origen examplebucket en la región China (Shanghai), perteneciente a otra cuenta de Alibaba Cloud, hacia el bucket de destino destbucket.

Nota

Debe especificar el Endpoint correspondiente a la región donde se encuentra el bucket. Para obtener más información, consulte Regions and Endpoints.

ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret
Consejo de seguridad : Utilizar una AccessKey en la línea de comandos representa un riesgo de seguridad. Para tareas automatizadas o de larga duración, se recomienda crear un rol RAM para la cuenta de origen y otorgar a la cuenta de destino permisos para asumir dicho rol RAM, logrando así un acceso entre cuentas más seguro.