AzCopy를 사용하여 Azure Blob Storage와 동기화

AzCopy v10 명령줄 유틸리티를 사용하여 로컬 스토리지를 Azure Blob Storage와 동기화할 수 있습니다.

로컬 파일 시스템의 콘텐츠를 Blob 컨테이너와 동기화할 수 있습니다. 컨테이너 및 가상 디렉터리를 서로 동기화할 수도 있습니다. 동기화는 단방향입니다. 즉, 이 두 엔드포인트 중에서 소스와 대상을 선택합니다. 동기화는 서버-서버 API도 사용합니다. 이 섹션에 제시된 예제는 계층 구조 네임스페이스가 있는 계정에서도 작동합니다.

비고

AzCopy 현재 릴리스에서는 Azure Blob Storage와 로컬 스토리지 동기화만 지원합니다. blob 컨테이너는 Azure Files 또는 AWS(Amazon Web Services) S3 버킷과 같은 다른 원본 및 대상과 동기화되지 않습니다.

파일 업로드, Blob 다운로드 또는 계정 간에 Blob 복사와 같은 다른 유형의 작업에 대한 예제를 보려면 이 문서의 다음 단계 섹션에 제공된 링크를 참조하세요.

시작하기

AzCopy를 다운로드하고 스토리지 서비스에 인증 자격 증명을 제공하는 방법에 관해 알아보려면 AzCopy 시작 문서를 참조하세요.

비고

이 문서의 예제에서는 Microsoft Entra ID를 사용하여 권한 부여 자격 증명을 제공한다고 가정합니다.

SAS 토큰을 사용하여 blob 데이터에 대한 액세스 권한을 부여하려면 각 AzCopy 명령에서 해당 토큰을 리소스 URL에 추가할 수 있습니다. 예: 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>'.

지침

기본적으로 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에 부하를 처리하기에 충분한 코어/메모리가 있는지 확인합니다.

  • 실수로 삭제되는 것을 방지하려면 플래그를 사용하기 전에 일시 삭제 기능을 사용하도록 --delete-destination=prompt|true 설정해야 합니다.

로컬 파일 시스템에 대한 변경 내용으로 컨테이너 업데이트

이 경우 컨테이너는 대상이며 로컬 파일 시스템은 원본입니다.

팁 (조언)

이 예에서는 경로 인수를 작은따옴표(‘’)로 묶습니다. Windows 명령 셸(cmd.exe)을 제외하고 모든 명령 셸에서 작은따옴표를 사용합니다. Windows 명령 셸(cmd.exe)을 사용하는 경우 작은따옴표(‘’) 대신 큰따옴표(“”)로 경로 인수를 묶습니다.

문법

azcopy sync '<local-directory-path>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>' --recursive

예시

azcopy sync 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive

변경이 포함된 로컬 파일 시스템을 컨테이너로 업데이트

이 경우 로컬 파일 시스템은 대상이며 컨테이너는 원본입니다.

팁 (조언)

이 예에서는 경로 인수를 작은따옴표(‘’)로 묶습니다. Windows 명령 셸(cmd.exe)을 제외하고 모든 명령 셸에서 작은따옴표를 사용합니다. Windows 명령 셸(cmd.exe)을 사용하는 경우 작은따옴표(‘’) 대신 큰따옴표(“”)로 경로 인수를 묶습니다.

문법

azcopy sync 'https://<storage-account-name>.blob.core.windows.net/<container-name>' 'C:\myDirectory' --recursive

예시

azcopy sync 'https://mystorageaccount.blob.core.windows.net/mycontainer' 'C:\myDirectory' --recursive

다른 컨테이너의 변경 내용으로 컨테이너 업데이트

이 명령에 표시되는 첫 번째 컨테이너는 원본입니다. 두 번째 컨테이너는 목적지입니다.

Microsoft Entra ID를 사용하여 권한 부여 자격 증명을 제공하는 경우 원본 및 대상 계정에서 적절한 역할을 설정했는지 확인합니다. 옵션 1: Microsoft Entra ID 사용

팁 (조언)

이 예에서는 경로 인수를 작은따옴표(‘’)로 묶습니다. Windows 명령 셸(cmd.exe)을 제외하고 모든 명령 셸에서 작은따옴표를 사용합니다. Windows 명령 셸(cmd.exe)을 사용하는 경우 작은따옴표(‘’) 대신 큰따옴표(“”)로 경로 인수를 묶습니다.

문법

azcopy sync 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>' --recursive

예시

azcopy sync 'https://mysourceaccount.blob.core.windows.net/mycontainer?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive

다른 컨테이너의 디렉토리에 있는 변경 사항을 적용하여 디렉터리를 업데이트하다

이 명령에 표시되는 첫 번째 디렉터리는 원본입니다. 두 번째 디렉터리가 대상입니다.

Microsoft Entra ID를 사용하여 권한 부여 자격 증명을 제공하는 경우 원본 및 대상 계정에서 적절한 역할을 설정했는지 확인합니다. 옵션 1: Microsoft Entra ID 사용

팁 (조언)

이 예에서는 경로 인수를 작은따옴표(‘’)로 묶습니다. Windows 명령 셸(cmd.exe)을 제외하고 모든 명령 셸에서 작은따옴표를 사용합니다. Windows 명령 셸(cmd.exe)을 사용하는 경우 작은따옴표(‘’) 대신 큰따옴표(“”)로 경로 인수를 묶습니다.

문법

azcopy sync 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>/<SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive

예시

azcopy sync 'https://mysourceaccount.blob.core.windows.net/<container-name>/myDirectory?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/myDirectory' --recursive

SAS 토큰을 사용하여 다른 컨테이너의 변경 내용으로 컨테이너 업데이트

이 명령에 표시되는 첫 번째 컨테이너는 원본입니다. 두 번째 컨테이너는 목적지입니다.

SAS 토큰을 제공하는 경우 azcopy 동기화를 사용할 때 원본 및 대상 스토리지 계정에 해당하는 SAS 토큰을 사용해야 합니다.

문법

azcopy sync 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<destination-SAS-token>' --recursive

예시

azcopy sync 'https://mysourceaccount.blob.core.windows.net/mycontainer?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/?sv=2018-03-28&ss=qrdu&dst=mco&kp=rwdlapuc&se=2019-07-04T05:30:08Z&st=2019-07-03T21:31:10Z&spr=https&sig=CAfhgnc9gdGktvB=yzx9CAjMKeeN678yiyFwdNU092JC8%6D' --recursive

팁 (조언)

대량의 데이터를 복사하는 경우 Azure Storage Explorer를 사용할 수 있습니다.

복사한 데이터의 크기를 확인하려면 위쪽 표시줄 메뉴에서 추가 ->폴더 통계 를 선택하여 크기(바이트)를 포함하여 디렉터리의 세부 정보를 가져옵니다.

선택적 플래그와 동기화

선택적 플래그를 사용하여 동기화 작업을 조정할 수 있습니다. 다음은 몇 가지 예제입니다.

시나리오 깃발
다운로드할 때 MD5 해시의 유효성을 엄격하게 검사하는 방법을 지정합니다. --check-md5=[NoCheck|LogOnly|FailIfDifferent|FailIfDifferentOrMissing]
패턴을 기반으로 파일을 제외합니다. --exclude-path
동기화 관련 로그 항목의 세부 정보를 지정합니다. --log-level=[경고|오류|정보|없음]
vhd 파일을 복사하는 방법을 지정합니다. --blob-type=BlockBlob --include-pattern "*.vhd" or --blob-type=BlockBlob

플래그의 전체 목록은 옵션을 참조하세요.

비고

기본적으로 --recursive 플래그가 true로 설정됩니다. 및 --exclude-pattern 플래그는 --include-pattern 파일 이름에만 적용되며 파일 경로의 다른 부분에는 적용되지 않습니다.

다음 단계

다음 문서에서 더 많은 예제를 찾아보세요.

이러한 문서를 참조하여 설정을 구성하고, 성능을 최적화하고, 문제를 해결하세요.