tencent cloud

파일 업/다운로드 또는 복사 - cp
마지막 업데이트 시간:2025-11-14 15:30:17
파일 업/다운로드 또는 복사 - cp
마지막 업데이트 시간: 2025-11-14 15:30:17
cp 명령어는 파일 업/다운로드 또는 복사에 사용됩니다.
주의:
파일 업로드 명령어를 사용하려면 권한 정책 설정 시 action을 cos:HeadBucket,cos:GetBucket,cos:HeadObject,cos:InitiateMultipartUpload,cos:UploadPart,cos:CompleteMultipartUpload,cos:ListMultipartUploads,cos:ListParts으로 지정해야 합니다.
파일 다운로드 명령어를 사용하려면 권한 정책 설정 시 action을 cos:HeadBucket,cos:GetBucket,cos:HeadObject,cos:GetObject으로 지정해야 합니다.
파일 복사 명령어를 사용하려면 권한 정책 설정 시 대상 객체 action을 cos:GetBucket, cos:HeadObject, cos:InitiateMultipartUpload, cos:PutObject, cos:CompleteMultipartUpload, 소스 객체 action을 cos:HeadBucket, cos:GetBucket, cos:HeadObject, cos:GetObject으로 지정해야 합니다.
자세한 내용은 CAM 지원 API를 참조하십시오.

명령어 형식

./coscli cp <source_path> <destination_path> [flags]
cp 명령은 다음 매개변수를 포함합니다.
매개변수 포맷
매개변수 용도
예시
source_path
소스 파일 경로. 로컬 경로 또는 COS 파일 경로일 수 있습니다. COS 경로는 구성 매개변수에 있는 버킷 별칭 또는 버킷 이름을 사용하여 액세스하는 것을 지원합니다. 버킷 이름을 사용하여 액세스하는 경우 추가로 endpoint flag가 필요합니다.
로컬 경로: ~/example.txt
버킷 별칭을 사용하여 COS 파일 경로를 지정: cos://bucketalias/example.txt
버킷 이름을 사용하여 COS 파일 경로를 지정: cos://examplebucket-1250000000/example.txt
destination_path
대상 파일 경로. 로컬 경로 또는 COS 파일 경로일 수 있습니다. COS 경로는 구성 매개변수에 있는 버킷 별칭 또는 버킷 이름을 사용하여 액세스하는 것을 지원합니다. 버킷 이름을 사용하여 액세스하는 경우 추가로 endpoint flag가 필요합니다.
로컬 경로: ~/example.txt
버킷 별칭을 사용하여 COS 파일 경로를 지정: cos://bucketalias/example.txt
버킷 이름을 사용하여 COS 파일 경로를 지정: cos://examplebucket-1250000000/example.txt
cp 명령어에는 다음과 같은 flag 옵션이 포함됩니다.
flag 약칭
flag 전체 명칭
flag 용도
없음
--include
특정 패턴이 포함된 파일(v1.0.4 이전 버전: 업로드 시 로컬 파일명만 필터링, v1.0.4 이후: 전체 경로 필터링)
예를 들어, ./test 아래의 모든 파일을 COS에 업로드해야 하며, ./test 아래에는 aaa 폴더가 포함되어 있고, aaa 폴더 아래에는 1.txt 파일이 포함되어 있습니다.
1.0.4 이전 버전은 aaa/1.txt와 일치합니다.
1.0.4 및 이후 버전은 ./test/aaa/1.txt와 일치합니다.
없음
--exclude
특정 패턴이 제외된 파일(v1.0.4 이전 버전: 업로드 시 로컬 파일명만 필터링, v1.0.4 이후: 전체 경로 필터링)
예를 들어, ./test 아래의 모든 파일을 COS에 업로드해야 하며, ./test 아래에는 aaa 폴더가 포함되어 있고, aaa 폴더 아래에는 1.txt 파일이 포함되어 있습니다.
1.0.4 이전 버전은 aaa/1.txt와 일치합니다.
1.0.4 및 이후 버전은 ./test/aaa/1.txt와 일치합니다.
-r
--recursive
폴더의 모든 파일 재귀적 순회 여부
없음
--storage-class
업로드 파일의 저장 유형을 지정(기본 STANDARD)하며, 더 많은 저장 유형은 저장 유형 개요를 참조하세요.
없음
--part-size
파일 파트 크기(기본 32MB, 최대 5GB 지원). 파일 크기에 따른 자동 파트 분할을 설정하려면 0을 입력하세요.
없음
--thread-num
동시 스레드 수(기본값: 5)
없음
--rate-limiting
단일 링크 속도 제한(0.1~100MB/s), 단위 MB/s
없음
--meta
특정 HTTP 표준 속성(HTTP Header) 및 x-cos-meta- 접두사가 붙은 사용자 정의 메타데이터(User Meta)를 포함한 업로드된 파일의 메타데이터입니다. 파일 메타데이터는 header:value#header:value 형식으로 Expires:2022-10-12T00:00:00.000Z#Cache-Control:no-cache#Content-Encoding:gzip#x-cos-meta-x:x와 같습니다.
없음
--routines
파일 간 동시 업로드 또는 다운로드의 스레드 수량을 지정하며, 기본값은 3입니다.
없음
--fail-output
이 옵션은 업로드 또는 다운로드 실패 시 파일의 오류 출력을 활성화할지 여부를 결정합니다(기본값은 true, 활성화임). 활성화되면 실패한 파일 전송은 지정 목록 내(지정하지 않은 경우 기본값은 ./coscli_output임)에 기록됩니다. 비활성화되면 실패한 파일의 수만 콘솔로 출력됩니다.
없음
--fail-output-path
이 옵션은 업로드 또는 다운로드 실패를 기록하는 파일의 오류 출력 폴더를 지정하는 데 사용됩니다. 사용자 정의 폴더 경로를 제공함으로써 오류 출력 폴더의 위치 및 이름을 제어할 수 있습니다. 이 옵션을 설정하지 않은 경우 기본 오류 로그 폴더 ./coscli_output를 사용합니다.
없음
--retry-num
빈도 제한 재시도 횟수(기본값은 0으로 재시도하지 않음). 1-10회 선택 가능합니다. 여러 대의 컴퓨터가 동시에 동일한 COS 목록에서 다운로드 작업을 실행하는 경우, 이 매개변수를 지정하여 재시도함으로써 빈도 제한 오류를 피할 수 있습니다.
없음
--err-retry-num
오류 재시도 횟수(기본값은 0). 1-10회로 지정하거나, 0으로 설정되면 재시도 하지 않음을 나타냅니다.
없음
--err-retry-interval
재시도 간격(--err-retry-num1-10으로 지정할 때에만 사용 가능함). 1-10초의 재시도 간격을 지정하며, 지정하지 않았거나 0으로 설정한 경우 매번의 재시도 간격은 1-10초 내에서 무작위로 선택됩니다.
없음
--only-current-dir
현재 목록 내의 파일만 업로드하고 하위 목록 및 그 내용을 무시할지 여부(기본값은 false로 무시하지 않음)
없음
--disable-all-symlink
업로드 시 모든 소프트 링크 서브파일 및 소프트 링크 하위 목록을 무시할지 여부(기본값은 true으로 업로드하지 않음). 현재 Linux 및 macOS 시스템에서만 지원됩니다.
없음
--enable-symlink-dir
소프트 링크의 하위 목록을 업로드할지 여부(기본값은 false로 업로드하지 않음). 현재 Linux 및 macOS 시스템에서만 지원됩니다.
없음
--disable-crc64
CRC64 데이터 검증을 비활성화할지 여부 (기본값은 false로 검증 비활성화임)
없음
--disable-checksum
기본값은 true이며, 샤드 crc64만 검증합니다. false로 설정하면 전체 파일의 crc64를 검증합니다. (coscli V1.0.6 및 이전 버전은 기본값이 false임)
없음
--move
대상 경로로 파일 복사 성공 후 소스 파일 삭제(COS 경로 간에만 사용 가능)
없음
--version-id
특정 버전 파일 다운로드(버전 관리 활성화된 버킷에서만 지원, 단일 파일 전용)
없음
--process-log
프로세스 로그를 활성화할지 여부. 기본값: true(활성화)
없음
--process-log-path
해당 옵션은 프로세스 로그를 저장하기 위한 전용 출력 폴더를 지정하는 데 사용됩니다. 로그에는 파일 업로드 또는 다운로드와 관련된 정보(오류 로그, 정상 실행 로그, 재시도 등)가 기록됩니다. 사용자 정의 폴더 경로를 제공하여 로그 출력 폴더의 위치와 이름을 제어할 수 있습니다. 이 옵션을 설정하지 않으면 기본 로그 폴더(coscli_output)가 사용됩니다.
없음
--skip-dir
기본값은 false이며, true로 설정하면 폴더 전송을 건너뜁니다.
없음
--acl
파일의 ACL 설정, 예: private, public-read
없음
--grant-read
피승인자에게 객체 읽기 권한을 부여합니다. 형식은 id="[OwnerUin]"입니다(예: id="100000000001"). 반각 쉼표(,)를 사용하여 여러 피승인자를 구분할 수 있습니다(예: id="100000000001",id="100000000002").
없음
--grant-read-acp
피승인자에게 객체의 접근 제어 목록(ACL) 읽기 권한을 부여합니다. 형식은 id="[OwnerUin]"입니다(예: id="100000000001"). 반각 쉼표(,)를 사용하여 여러 피승인자를 구분할 수 있습니다(예: id="100000000001",id="100000000002").
없음
--grant-write-acp
피승인자에게 객체의 접근 제어 목록(ACL) 쓰기 권한을 부여합니다. 형식은 id="[OwnerUin]"입니다(예: id="100000000001"). 반각 쉼표(,)를 사용하여 여러 피승인자를 구분할 수 있습니다(예: id="100000000001",id="100000000002").
없음
--grant-full-control
피승인자에게 객체 작업 관련 모든 권한을 부여합니다. 형식은 id="[OwnerUin]"입니다(예: id="100000000001"). 반각 쉼표(,)를 사용하여 여러 피승인자를 구분할 수 있습니다(예: id="100000000001",id="100000000002").
없음
--tags
객체의 태그 집합. 최대 10개의 태그 설정 가능(예: --tags="Key1=Value1&Key2=Value2").
없음
--forbid-overwrite
버전 관리가 활성화되지 않은 버킷에 파일을 업로드할 때, 동일한 이름의 객체 덮어쓰기 금지 여부 지정.
false로 지정하면 동일한 이름의 Object를 기본적으로 덮어씁니다.
true로 지정하면 동일한 이름의 Object를 덮어쓰는 것이 금지됩니다.
버킷의 버전 관리 상태가 활성화됨이나 일시 중지됨일 경우 x-cos-forbid-overwrite 요청 헤더 설정이 무효화되며, 동일한 이름의 객체를 덮어쓰는 것이 허용됩니다.
없음
--encryption-type
서버 측 암호화 방식(SSE-COS/SSE-C).
없음
--server-side-encryption
서버 측 암호화 알고리즘, AES256, cos/kms 지원.
SSE-COS 또는 SSE-KMS를 사용할 때 이 필드는 필수 항목입니다.
없음
--sse-customer-algo
서버 측 암호화 알고리즘, AES256 지원.
SSE-C를 사용할 때 이 필드는 필수 항목입니다.
없음
--sse-customer-key
서버 측 암호화 키의 Base64 인코딩.
예: MDEyMzQ1Njc4OUFCQ0RFRjAxMjM0NTY3ODlBQkNERUY=.
SSE-C를 사용할 때 이 필드는 필수 항목입니다.
없음
--sse-customer-key-md5
서버 측 암호화 키의 MD5 해시 값, Base64 인코딩 사용.
예: U5L61r7jcwdNvT7frmUG8g==.
SSE-C를 사용할 때 이 필드는 필수 항목입니다.
없음
--check-point
중단 지점에서 재개할지 여부. 기본값: true(중단 지점에서 재개 활성화)
설명:
cp 명령어는 대용량 파일을 업로드 및 다운로드할 때 동시 업로드/다운로드를 자동으로 활성화합니다.
파일이 --part-size보다 큰 경우 COSCLI는 먼저 파일을 --part-size로 나눈 다음 --thread-num 스레드를 사용하여 업/다운로드 작업을 동시 실행합니다.
각 스레드는 링크를 점검합니다. 각 링크에 대해 --rate-limiting 매개변수를 사용하여 단일 링크의 속도를 제한할 수 있습니다. 동시 업/다운로드가 활성화된 경우 총 속도는 --thread- num * --rate-limiting입니다.
파일을 파트로 업로드/다운로드할 때 기본적으로 중간 지점 재개가 활성화됩니다.
--include--exclude는 표준 정규식 구문을 지원하므로, 파일 특정 조건 필터링에 사용할 수 있습니다.
zsh를 사용할 때 pattern 문자열의 양쪽 끝에 큰따옴표를 넣어야 할 수도 있습니다.
./coscli cp ~/test/ cos://bucket1/example/ -r --include ".*\\.txt$" --meta=x-cos-meta-a:a#ContentType:text#Expires:2022-10-12T00:00:00.000Z
Windows cmd에서 명령을 사용할 때 부호 ‘——’(중국어 줄표)를 cmd에 붙혀넣으면 자동으로 ‘--’로 변하기 때문에 수동으로 입력해야 합니다.
이 명령의 기타 범용 옵션(예: 버킷 전환, 사용자 계정 전환 등)에 대해서는 범용 옵션 문서를 참고하시기 바랍니다.

작업 예시

업로드

단일 파일 업로드

./coscli cp ~/example.txt cos://bucket1/example.txt

로컬 test 폴더 내 모든 파일 및 하위 폴더를 bucket1 버킷의 example 폴더로 업로드

./coscli cp ~/test/ cos://bucket1/example/ -r

로컬 test 폴더 및 하위 폴더 내의 모든 .mp4 파일을 bucket1 버킷의 example 폴더로 업로드

./coscli cp ~/test/ cos://bucket1/example/ -r --include ".*\\.mp4$"

로컬 test 폴더 및 하위 폴더 내의 .md 파일을 제외한 모든 파일을 bucket1 버킷의 example 폴더로 업로드

./coscli cp ~/test/ cos://bucket1/example/ -r --exclude ".*\\.md$"

로컬 test 폴더 및 하위 폴더 내의 .md 및 .html 파일을 제외한 모든 파일을 bucket1 버킷의 example 폴더로 업로드

./coscli cp ~/test/ cos://bucket1/example/ -r --exclude ".*\\.html$|.*\\.md$"

로컬 dir 폴더에 dirA, dirB, dirC, dirD 4개의 폴더가 있으며 dirD 폴더를 제외한 dir 폴더의 모든 콘텐츠를 업로드

./coscli cp dir/ cos://bucket1/example/ -r --exclude "dirD.*"

로컬 test 폴더 내 모든 파일 및 하위 폴더를 bucket1 버킷의 example 폴더로 업로드하며, 저장 유형은 아카이브로 설정

./coscli cp ~/test/ cos://bucket1/example/ -r --storage-class ARCHIVE

로컬 file.txt 파일을 bucket1 버킷에 업로드하고 단일 URL 속도 제한을 1.3MB/s로 설정

./coscli cp ~/file.txt cos://bucket1/file.txt --rate-limiting 1.3

다운로드 작업

단일 파일 다운로드

./coscli cp cos://bucket1/example.txt ~/example.txt

bucket1 버킷의 example 폴더 내 모든 파일 및 하위 폴더를 로컬 test 폴더로 다운로드

./coscli cp cos://bucket1/example/ ~/test/ -r

bucket1 버킷의 example 폴더 및 하위 폴더 내의 모든 .mp4 파일을 로컬 test 폴더로 다운로드

./coscli cp cos://bucket1/example/ ~/test/ -r --include ".*\\.mp4$"

bucket1 버킷의 example 폴더 및 하위 폴더 내의 .md 파일을 제외한 모든 파일을 로컬 test 폴더로 다운로드

./coscli cp cos://bucket1/example/ ~/test/ -r --exclude ".*\\.md$"

bucket1 버킷의 example 폴더 및 하위 폴더 내의 .md 및 .html 파일을 제외한 모든 파일을 로컬 test 폴더로 다운로드

./coscli cp cos://bucket1/example/ ~/test/ -r --exclude ".*\\.html$|.*\\.md$"

bucket1 버킷의 example.txt 파일(xxx 버전)을 로컬 test 디렉터리로 다운로드

./coscli cp cos://bucket1/example.txt ~/test/ --version-id xxx

복사 작업

버킷의 단일 파일 복사

./coscli cp cos://bucket1/example.txt cos://bucket1/example_copy.txt

버킷 간 단일 파일 복사

./coscli cp cos://bucket1/example.txt cos://bucket2/example_copy.txt

bucket1 버킷의 example1 폴더 내 모든 파일 및 하위 폴더를 bucket2 버킷의 example2 폴더로 복사

./coscli cp cos://bucket1/example1/ cos://bucket2/example2/ -r

bucket1 버킷의 example1 폴더 및 하위 폴더 내의 모든 .mp4 파일을 bucket2 버킷의 example2 폴더로 복사

./coscli cp cos://bucket1/example1/ cos://bucket2/example2/ -r --include ".*\\.mp4$"

bucket1 버킷의 example1 폴더 및 하위 폴더 내의 .md 파일을 제외한 모든 파일을 bucket2 버킷의 example2 폴더로 복사

./coscli cp cos://bucket1/example1/ cos://bucket2/example2/ -r --exclude ".*\\.md$"

bucket1 버킷의 example.txt 파일(xxx 버전)을 bucket2 버킷으로 복사

./coscli cp cos://bucket1/example.txt cos://bucket2/ --version-id xxx

bucket1 버킷의 test 폴더를 bucket2 버킷으로 이동

./coscli cp cos://bucket1/test/ cos://bucket2/test/ --move -r

문제 해결에 도움이 되었나요?
더 자세한 내용은 문의하기 또는 티켓 제출 을 통해 문의할 수 있습니다.
아니오

피드백