azcopy sync

원본 위치를 대상 위치로 복제합니다. 이 문서에서는 azcopy sync 명령에 대한 자세한 참조를 제공합니다. 원본 위치와 대상 위치 간에 Blob을 동기화하는 방법에 대한 자세한 내용은 AzCopy v10을 사용하여 Azure Blob Storage와 동기화를 참조하세요. Azure Files의 경우 파일 동기화를 참조 하세요.

개요

마지막으로 수정된 시간은 비교에 사용됩니다. 대상에서 마지막으로 수정한 시간이 더 최근인 경우 파일을 건너뜁니다. 또는 --compare-hash 플래그를 사용하여 MD5 해시와 다른 파일만 전송할 수 있습니다. 지원되는 쌍은 다음과 같습니다.

  • 로컬 <-> Azure Blob/Azure File(SAS 또는 OAuth 인증을 사용할 수 있음)
  • Azure Blob <-> Azure Blob(SAS 또는 OAuth 인증을 사용할 수 있습니다).
  • Azure File <-> Azure File(원본에 SAS가 포함되어 있거나 공개적으로 액세스할 수 있어야 함. 대상에 SAS 인증을 사용해야 함)
  • Azure Blob <-> Azure 파일

동기화 명령은 다음과 같은 여러 가지 방법으로 복사 명령과 다릅니다.

  1. 기본적으로 재귀 플래그는 true이며 sync는 모든 하위 디렉터리를 복사합니다. Sync는 재귀 플래그가 false인 경우 디렉터리 내의 최상위 파일만 복사합니다.
  2. 가상 디렉터리 간에 동기화할 때 가상 디렉터리 중 하나와 이름이 같은 Blob이 있는 경우 경로에 후행 슬래시(예제 참조)를 추가합니다.
  3. 'delete-destination' 플래그가 true 또는 prompt로 설정된 경우 sync는 대상에서 원본에 없는 파일 및 Blob을 삭제합니다.

지침

기본적으로 sync 명령은 파일 이름과 마지막으로 수정된 타임스탬프를 비교합니다. --compare-hash 플래그를 사용하여 마지막으로 수정한 타임스탬프 대신 MD5 해시를 사용하도록 해당 동작을 재정의할 수 있습니다. --delete-destination 선택적 플래그를 true 또는 prompt 값으로 설정하여 해당 파일이 소스 디렉터리에 더는 존재하지 않는 경우 대상 디렉터리의 파일을 삭제합니다.

  • --delete-destination 플래그를 true로 설정하면 AzCopy에서 프롬프트를 제공하지 않고 파일을 삭제합니다. AzCopy가 파일을 삭제하기 전에 프롬프트를 표시하려면 --delete-destination 플래그를 prompt로 설정합니다.

  • --delete-destination 플래그를 prompt 또는 false로 설정하려는 경우 sync 명령 대신 copy 명령을 사용하고 --overwrite 매개 변수를 ifSourceNewer로 설정하는 것이 좋습니다. 복사 작업은 파일을 이동하기 전에 원본 또는 대상을 인덱싱하지 않아도 되기 때문에 copy 명령을 사용하면 메모리를 적게 사용하고 청구 비용을 줄일 수 있습니다.

  • --compare-hash 플래그를 사용하지 않으려면 마지막으로 수정된 시간이 파일이 전송되어야 하는지 여부를 결정하는 데 중요하므로 sync 명령을 실행하는 컴퓨터에 정확한 시스템 시계가 있어야 합니다. 시스템의 클록 오차가 심각한 경우 sync 명령을 실행하려는 시간에 너무 가까운 대상의 파일을 수정하지 마십시오.

  • AzCopy는 서버 간 API를 사용하여 스토리지 계정 간에 데이터를 동기화합니다. 즉, 데이터가 스토리지 서버 간에 직접 복사됩니다. 그러나 AzCopy는 각 전송을 설정하고 모니터링하며, 더 큰 스토리지 계정(예: 수백만 개의 Blob을 포함하는 계정)의 경우 AzCopy는 이러한 작업을 수행하기 위해 상당한 양의 컴퓨팅 리소스가 필요할 수 있습니다. 따라서 VM(Virtual Machine)에서 AzCopy를 실행하는 경우 VM에 부하를 처리하기에 충분한 코어/메모리가 있는지 확인합니다.

  • Blob Storage의 경우 --delete-destination=prompt|true 플래그를 사용하기 전에 일시 삭제 기능을 사용하도록 설정하여 실수로 삭제되는 것을 방지할 수 있습니다.

고급

파일 확장명을 지정하지 않은 경우 AzCopy는 파일 확장명 또는 콘텐츠에 따라 로컬 디스크에서 업로드할 때 파일의 콘텐츠 유형을 자동으로 감지합니다.

기본 제공 조회 테이블은 작지만 Unix에서는 다음 이름 중 하나 이상의 이름으로 제공되는 경우 로컬 시스템의 mime.types 파일에 의해 확대됩니다.

  • /etc/mime.types
  • /etc/apache2/mime.types
  • /etc/apache/mime.types

Windows에서는 레지스트리에서 MIME 형식이 추출됩니다.

--compare-hash 플래그를 사용하여 기본 동작을 재정의하지 않는 한 기본적으로 동기화는 마지막으로 수정된 시간에서 작동합니다. 따라서 Azure File <-> Azure File의 경우 Last-Modified 헤더 필드가 x-ms-file-change-time 대신 사용되므로 원본의 메타데이터 변경 내용이 전체 복사를 트리거할 수도 있습니다.

azcopy sync [flags]

예제

단일 파일 동기화:

azcopy sync "/path/to/file.txt" "https://[account].blob.core.windows.net/[container]/[path/to/blob]"

위와 동일하지만 파일 콘텐츠의 MD5 해시를 계산한 다음 해당 MD5 해시를 Blob의 Content-MD5 속성으로 저장합니다.

azcopy sync "/path/to/file.txt" "https://[account].blob.core.windows.net/[container]/[path/to/blob]" --put-md5

하위 디렉터리를 포함하여 전체 디렉터리를 동기화합니다(재귀는 기본적으로 사용됨).

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" 또는 azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --put-md5

디렉터리 내의 파일만 동기화하지만 하위 디렉터리 또는 하위 디렉터리 내의 파일은 동기화하지 않습니다.

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --recursive=false

디렉터리에 있는 파일의 하위 집합을 동기화합니다(예: jpg 및 pdf 파일만 또는 파일 이름이 "exactName"인 경우).

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --include-pattern="*.jpg;*.pdf;exactName"

전체 디렉터리를 동기화하지만 범위에서 특정 파일을 제외합니다(예: foo로 시작하거나 막대로 끝나는 모든 파일).

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --exclude-pattern="foo*;*bar"

단일 Blob 동기화:

azcopy sync "https://[account].blob.core.windows.net/[container]/[path/to/blob]?[SAS]" "https://[account].blob.core.windows.net/[container]/[path/to/blob]"

가상 디렉터리 동기화:

azcopy sync "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]?[SAS]" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --recursive=true

Blob과 이름이 같은 가상 디렉터리를 동기화합니다(명확하게 구분하기 위해 경로에 후행 슬래시 추가).

azcopy sync "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]/?[SAS]" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]/" --recursive=true

Azure 파일 디렉터리를 동기화합니다(Blob과 동일한 구문).

azcopy sync "https://[account].file.core.windows.net/[share]/[path/to/dir]?[SAS]" "https://[account].file.core.windows.net/[share]/[path/to/dir]" --recursive=true

참고: include 및 exclude 플래그를 함께 사용하면 포함 패턴과 일치하는 파일만 사용되고 제외 패턴과 일치하는 파일은 항상 무시됩니다.

옵션

--block-size-mb(부동) Azure Storage에 업로드하거나 Azure Storage에서 다운로드할 때 이 블록 크기(MiB로 지정됨)를 사용합니다. 기본값은 파일 크기에 따라 자동으로 계산됩니다. 소수 자릿수가 허용됩니다(예: 0.25). 업로드하거나 다운로드할 때 허용되는 최대 블록 크기는 0.75 * AZCOPY_BUFFER_GB입니다. 자세히 알아보려면 메모리 사용 최적화를 참조하세요.

--check-md5(문자열) 다운로드 시 MD5 해시의 유효성을 얼마나 엄격하게 검사해야 하는지 지정합니다. 이 옵션은 다운로드할 때만 사용할 수 있습니다. 사용 가능한 값은 NoCheck, LogOnly, FailIfDifferent, FailIfDifferentOrMissing입니다. (기본값 'FailIfDifferent'). (기본값 "FailIfDifferent")

--cpk-by-name(문자열) 클라이언트에서 이름별로 키를 제공하면 Azure Blob Storage에 대해 요청하는 클라이언트에서 요청별로 암호화 키를 제공하는 옵션을 사용할 수 있습니다. 제공된 키 이름은 Azure Key Vault에서 가져와서 데이터를 암호화하는 데 사용됩니다.

--cpk-by-value 클라이언트에서 이름별로 키를 제공하면 Azure Blob Storage에 대해 요청하는 클라이언트에서 요청별로 암호화 키를 제공하는 옵션을 사용할 수 있습니다. 제공된 키와 해당 해시는 환경 변수에서 가져옵니다.

--delete-destination(문자열) 원본에 없는 추가 파일을 대상에서 삭제할지 여부를 정의합니다. true, false 또는 prompt로 설정할 수 있습니다. prompt로 설정하면 삭제할 파일 및 Blob을 예약하기 전에 사용자에게 질문이 표시됩니다. (기본값 'false'). (기본값 "false")

--dry-run 동기화 명령에 의해 복사되거나 제거될 파일의 경로를 인쇄합니다. 이 플래그는 실제 파일을 복사하거나 제거하지 않습니다.

--exclude-attributes(문자열)(Windows에만 해당) 해당 특성이 특성 목록과 일치하는 파일을 제외합니다. 예: A; S; R

--exclude-path(문자열) 원본과 대상을 비교할 때 이러한 경로를 제외합니다. 이 옵션은 와일드카드 문자(*)를 지원하지 않습니다. 상대 경로 접두사(예: myFolder;myFolder/subDirName/file.pdf)를 확인합니다.

--exclude-pattern(문자열) 이름이 패턴 목록과 일치하는 파일을 제외합니다. 예: .jpg;.pdf;exactName

--exclude-regex(문자열) 정규식과 일치하는 파일의 상대 경로를 제외합니다. 정규식은 ';'으로 구분합니다.

--force-if-read-only Windows 또는 Azure Files에서 기존 파일을 덮어쓸 때 기존 파일에 읽기 전용 특성 집합이 있는 경우에도 덮어쓰기가 작동하도록 강제합니다.

--from-to(문자열) 필요에 따라 원본 대상 조합을 지정합니다. 예: LocalBlob, BlobLocal, LocalFile, FileLocal, BlobFile, FileBlob 등

-h, --help 동기화에 대한 도움말

--include-attributes(문자열)(Windows만 해당) 특성이 특성 목록과 일치하는 파일만 포함합니다. 예: A; S; R

--include-pattern(문자열) 이름이 패턴 목록과 일치하는 파일만 포함합니다. 예: .jpg;.pdf;exactName

--include-regex(문자열) 정규식과 일치하는 파일의 상대 경로를 포함합니다. 정규식은 ';'으로 구분합니다.

--log-level(문자열) 로그 파일의 로그 세부 정보 표시 수준을 정의합니다. 사용할 수 있는 수준으로는 INFO(모든 요청 및 응답), WARNING(느린 응답), ERROR(실패한 요청만), NONE(출력 로그 없음)이 있습니다. (기본값 INFO) (기본값 "INFO")

--mirror-mode 마지막 수정 시간 기반 비교를 사용하지 않도록 설정하고 이 플래그가 true로 설정된 경우 대상에서 충돌하는 파일 및 Blob을 덮어씁니다. 기본값은 false입니다.

--put-blob-size-mb 이 크기(MiB에 지정됨)를 임계값으로 사용하여 Azure Storage에 업로드할 때 Blob을 단일 PUT 요청으로 업로드할지 여부를 결정합니다. 기본값은 파일 크기에 따라 자동으로 계산됩니다. 소수 자릿수가 허용됩니다(예: 0.25).

--preserve-permissions 기본값은 False입니다. 인식 리소스 간(Windows 및 Azure Files 또는 ADLS Gen 2에서 ADLS Gen 2)에 ACL을 유지합니다. 계층 구조 네임스페이스 계정의 경우 소유권 수정 및 권한 수정 권한이 있는 컨테이너 SAS 또는 OAuth 토큰이 필요합니다. 다운로드의 경우 --backup 플래그가 있어야 새 소유자가 AzCopy를 실행하는 사용자가 아닌 지점에서 권한을 복원할 수 있습니다. 이 플래그는 파일 전용 필터(예: include-pattern)가 지정되지 않는 한 파일과 폴더에 모두 적용됩니다.

--preserve-smb-info SMB 인식 위치의 경우 플래그는 기본적으로 true로 설정됩니다. SMB 인식 리소스(Azure Files) 간에 SMB 속성 정보(마지막으로 쓴 시간, 만든 시간, 특성 비트)를 유지합니다. 이 플래그는 파일 전용 필터(예: include-pattern)가 지정되지 않는 한 파일과 폴더에 모두 적용됩니다. 폴더에 대해 전송되는 정보는 폴더에 대해 유지되지 않는 마지막으로 쓴 시간을 제외하면 파일에 대해 전송되는 정보와 동일합니다. (기본값 true)

--put-md5 각 파일의 MD5 해시를 만들고 해시를 대상 Blob 또는 파일의 Content-MD5 속성으로 저장합니다. (기본적으로 해시는 만들어지지 않습니다.) 업로드할 때만 사용할 수 있습니다.

--recursive 기본적으로 True이며 디렉터리 간에 동기화할 때 하위 디렉터리를 재귀적으로 확인합니다. (기본값: true) (기본값 true)

--s2s-preserve-access-tier 서비스 간 복사가 진행되는 동안 액세스 계층을 유지합니다. 대상 스토리지 계정이 액세스 계층 설정을 지원하도록 하려면 Azure Blob Storage: 핫, 쿨 및 보관 액세스 계층을 참조하세요. 액세스 계층 설정이 지원되지 않는 경우 s2sPreserveAccessTier=false를 사용하여 액세스 계층 복사를 무시합니다. (기본값: true) (기본값 true)

--s2s-preserve-blob-tags 한 Blob Storage에서 다른 Blob Storage로의 서비스 간 동기화 중에 인덱스 태그를 유지합니다.

부모 명령에서 상속된 옵션

--cap-mbps(float) 전송 속도를 제한합니다(Mbps). 순간별 처리량은 한도와 약간 다를 수 있습니다. 이 옵션이 0으로 설정되거나 생략되는 경우 처리량이 제한되지 않습니다.

--output-type (string) 명령 출력의 형식입니다. text, json 등을 선택할 수 있습니다. 기본값은 'text'입니다. (기본 "text")

--trusted-microsoft-suffixes(string) Microsoft Entra 로그인 토큰을 보낼 수 있는 다른 do기본 접미사를 지정합니다. 기본값은 ‘.core.windows.net;.core.chinacloudapi.cn;.core.cloudapi.de;.core.usgovcloudapi.net;*.storage.azure.net’입니다. 여기에 나열된 모든 항목이 기본값에 추가됩니다. 보안을 위해 Microsoft Azure do기본만 여기에 배치해야 합니다. 여러 항목을 세미콜론으로 구분합니다.

참고 항목