연습 - AzCopy를 사용하여 Azure Storage Blob 이동

완료됨

Azure CLI를 사용하는 대신 AzCopy 명령을 평가하기로 결정했습니다. 이전과 마찬가지로 제품 사양에 대한 세부 정보가 포함되며, 6개월보다 오래된 Blob을 별도의 Blob Storage 계정의 보관 저장소로 이동하려고 합니다.

이 연습에서는 AzCopy를 사용하여 지난 6개월 동안 변경되지 않은 Blob을 별도의 스토리지 계정으로 마이그레이션하는 방법을 조사해 보겠습니다.

데이터 생성 및 핫 스토리지에 추가

먼저 Azure CLI를 사용하여 두 개의 계정을 만듭니다.

무료 샌드박스를 사용하면 Azure 글로벌 지역의 일부 하위 지역에 리소스를 만들 수 있습니다. 리소스를 만들 때 다음 목록에서 지역을 선택합니다.

  • westus2
  • southcentralus
  • centralus
  • eastus
  • westeurope
  • southeastasia
  • japaneast
  • brazilsouth
  • australiasoutheast
  • centralindia
  1. 스토리지 계정 이름 및 지역에 대한 환경 변수를 만듭니다. <location>을 이전 목록의 지역으로 바꿉니다.

    HOT_STORAGE_NAME=hotstorage$RANDOM
    COOL_STORAGE_NAME=coolstorage$RANDOM
    LOCATION=<location>
    
  2. 이제, 다음 명령을 실행하여 Blob을 보관할 스토리지 계정을 만듭니다.

    az storage account create \
      --location $LOCATION \
      --name $HOT_STORAGE_NAME \
      --resource-group "<rgn>[Sandbox resource group name]</rgn>" \
      --sku Standard_RAGRS \
      --kind BlobStorage \
      --access-tier Hot
    
  3. 보관된 Blob을 보관할 스토리지 계정을 만듭니다. 액세스 계층을 사용합니다. 이전과 마찬가지로 적절한 지역을 지정하고 스토리지 계정의 고유한 이름을 선택합니다.

    az storage account create \
      --location $LOCATION \
      --name $COOL_STORAGE_NAME \
      --resource-group "<rgn>[Sandbox resource group name]</rgn>" \
      --sku Standard_RAGRS \
      --kind BlobStorage \
      --access-tier Cool
    

설정

AzCopy의 최신 버전(현재 버전 10)을 다운로드하는 것으로 시작하겠습니다. Azure CLI에는 AzCopy가 포함되어 있지만 이전 버전일 수 있습니다. 스토리지 계정에 대한 SAS 토큰을 생성한 다음 일부 샘플 데이터를 업로드하겠습니다.

  1. Cloud Shell 창에서 다음 명령을 실행하여 최신 버전의 Linux용 AzCopy를 다운로드하고 추출합니다.

    wget -O azcopy.gz https://aka.ms/downloadazcopy-v10-linux
    gunzip azcopy.gz
    tar xvf azcopy
    
  1. Azure Portal에 로그인하려면 이 링크를 선택합니다. 이 링크는 샌드박스를 활성화한 것과 동일한 계정을 사용하여 Azure Portal에 로그인합니다.

  2. 모든 리소스를 선택하고 대상(쿨) 스토리지 계정을 선택합니다.

  3. 스토리지 계정 페이지의 보안 + 네트워킹에서 공유 액세스 서명을 선택합니다.

  4. 공유 액세스 서명 페이지의 허용된 리소스 종류 섹션에서 컨테이너개체를 선택합니다.

  5. 허용되는 리소스 종류를 확인하고 공유 액세스 서명 페이지의 맨 아래에서 SAS 및 연결 문자열 생성을 선택합니다.

  6. Cloud Shell에서 환경 변수를 만들고 포털에서 만들어진 SAS 토큰 값을 할당합니다.

    COOL_SAS_TOKEN="<token from portal>"
    
  7. 해당 단계를 반복하고 핫 스토리지 계정에 대해 생성된 SAS 토큰을 HOT_SAS_TOKEN 변수에 할당합니다.

    HOT_SAS_TOKEN="<token from portal>"
    
  8. 다음 명령을 실행하여 이 연습을 위한 샘플 파일을 다운로드합니다.

    git clone https://github.com/MicrosoftDocs/mslearn-copy-move-blobs-from-containers-or-storage-accounts sample
    
    

보관된 Blob을 저장할 컨테이너 만들기

  1. Cloud Shell에서 ‘AzCopy’ 유틸리티가 포함된 디렉터리로 이동하여 <version>을 다운로드한 최신 AzCopy 릴리스의 버전 번호로 바꿉니다. dir 명령을 사용하여 디렉터리 이름을 찾을 수 있습니다.

    cd azcopy_linux_amd64_<version>
    
  2. AzCopy 명령줄 프로세스에서 보관된 콘텐츠의 쿨 스토리지 대상에 이름이 azcopy-archive인 새 컨테이너를 만듭니다.

    ./azcopy make https://$COOL_STORAGE_NAME.blob.core.windows.net/azcopy-archive$COOL_SAS_TOKEN
    

    명령이 Successfully created the resource(리소스를 생성했습니다)라는 메시지로 응답하는지 확인합니다.

  3. 가상의 사양 파일을 저장할 핫 스토리지 대상에 specifications라는 새 컨테이너를 만듭니다.

    ./azcopy make https://$HOT_STORAGE_NAME.blob.core.windows.net/specifications$HOT_SAS_TOKEN
    

    명령이 Successfully created the resource(리소스를 생성했습니다)라는 메시지로 응답하는지 확인합니다.

  4. 스토리지 계정에 파일을 업로드하고 각 파일을 Blob으로 저장합니다. 이 명령은 여러 사양 파일을 업로드합니다.

    ./azcopy copy "../sample/specifications/*" "https://$HOT_STORAGE_NAME.blob.core.windows.net/specifications$HOT_SAS_TOKEN"
    

스토리지에 Blob 복사

  1. Cloud Shell에서 다음 명령을 실행하여 원본 컨테이너의 Blob 목록과 마지막 수정 시간을 생성한다.

    az storage blob list \
      --account-name $HOT_STORAGE_NAME \
      --container-name "specifications" \
      --sas-token $HOT_SAS_TOKEN \
      --query '[].{name:name, properties:properties.lastModified}'
    
  2. 이제 Blob 목록과 마지막 수정 시간이 있으므로 이 정보를 사용하여 스크립트를 만들 수 있습니다. 이 스크립트는 AzCopy를 사용하여 최종 수정 시간이 6개월 이상 지난 각 Blob을 스토리지로 전송합니다. 방금 이러한 파일을 추가했기 때문에 그중 어느 것도 6개월로 필터링할 수 있을 만큼 오래되지 않았습니다. 그러나 이 예시 명령을 실행하여 ‘specification01.md’ 파일을 새 쿨 스토리지 컨테이너에 복사할 수 있습니다.

    ./azcopy copy https://$HOT_STORAGE_NAME.blob.core.windows.net/specifications/specification01.md$HOT_SAS_TOKEN https://$COOL_STORAGE_NAME.blob.core.windows.net/azcopy-archive$COOL_SAS_TOKEN
    
  3. 작은 Blob을 복사하면 전송이 빠르게 완료되지만 Blob의 크기가 수 기가바이트라고 가정해 보겠습니다. 최근에 실행되었거나 아직 실행 중인 AzCopy 작업을 보려면 다음 명령을 실행합니다.

    ./azcopy jobs list
    

    전송 작업의 ‘JobId’를 적어둡니다.

  4. 다음 명령을 실행하여 작업의 상태를 확인합니다. <jobid>를 이전 단계에서 적어둔 작업 ID와 바꿉니다.

    ./azcopy jobs show <jobid>
    
  5. Blob이 복사되었는지 확인합니다. 다음 명령을 실행하여 대상 스토리지 계정의 azcopy-archive 컨테이너에 있는 Blob을 나열합니다.

    ./azcopy list https://$COOL_STORAGE_NAME.blob.core.windows.net/azcopy-archive$COOL_SAS_TOKEN
    

핫() 스토리지에서 Blob 제거

  1. 핫(Hot) 스토리지에 Blob을 복사해도 쿨(Cool) 스토리지에서 Blob이 제거되지 않습니다. 이러한 Blob은 수동으로 삭제해야 합니다. 예를 들어, 다음 명령을 실행하면 원본(핫) 스토리지 계정에서 "specification01.md" Blob을 삭제할 수 있습니다.

    ./azcopy remove https://$HOT_STORAGE_NAME.blob.core.windows.net/specifications/specification01.md$HOT_SAS_TOKEN