다음을 통해 공유


azcopy sync

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

참고 항목

AzCopy는 전송 중에 원본 또는 대상이 적극적으로 변경되는 시나리오를 지원하지 않습니다.

개요

마지막으로 수정된 시간은 비교에 사용됩니다. 대상에서 마지막으로 수정한 시간이 더 최근인 경우 파일을 건너뜁니다. 또는 --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")

--compare-hash (string) LMT(마지막 수정 시간)의 대안으로 해시를 사용하도록 동기화에 알릴 수 있습니다. 원격 원본에서 해시가 누락되면 오류가 발생합니다. (없음, MD5) 기본값: 없음(기본값 "없음")

--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(문자열) 정규식과 일치하는 파일의 상대 경로를 포함합니다. 정규식은 ';'으로 구분합니다.

--hash-meta-dir 사용하는 --local-hash-storage-mode=HiddenFiles경우 원본의 관련 파일 옆에 있는 것이 아니라 해시 메타데이터 파일을 저장할 대체 디렉터리를 지정할 수 있습니다.

--local-hash-storage-mode 파일 해시를 캐시하는 다른 방법을 지정합니다. 유효한 옵션은 다음과 HiddenFiles (OS Agnostic)XAttr (Linux/MacOS only 같습니다. (원본을 트래버스한 모든 파일 시스템에서 필요user_xattr), AlternateDataStreams (Windows 전용. 대상 볼륨에 명명된 스트림 필요).

--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-posix-properties- 기본값은 False입니다. Preserves 통계 또는 통계에서 개체 메타데이터로 수집된 속성 정보입니다.

--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로의 서비스 간 동기화 중에 인덱스 태그를 유지합니다.

--trailing-dot 파일 공유 관련 작업을 안전한 방식으로 처리하도록 기본적으로 사용하도록 설정됩니다. 사용 가능한 옵션: Enable, Disable. 파일 서비스가 경로의 후행 점을 트리밍하는 후행 점 파일의 레거시(잠재적으로 안전하지 않은) 처리로 돌아가도록 선택합니다 Disable . 이 경우 전송에 후행 점(예 mypath mypath.: 및)에 의해서만 다른 두 개의 경로가 포함된 경우 데이터가 손상될 수 있습니다. 이 플래그가 설정 Disable 되고 AzCopy에서 후행 점 파일이 발생하면 검사 로그에서 고객에게 경고하지만 작업을 중단하려고 시도하지는 않습니다. 대상에서 후행 점 파일(Windows 또는 Blob Storage)을 지원하지 않는 경우 후행 점 파일이 전송의 루트인 경우 AzCopy가 실패하고 열거 중에 발생한 후행 점 경로를 건너뜁니다.

부모 명령에서 상속된 옵션

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

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

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

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

참고 항목