TheKoguryo's 기술 블로그

 Version 2024.04.01

14.1.2.2 CLI를 통한 파일 업로드

  1. Object Storage Namespace을 조회합니다.

    oci os ns get
    
  2. Bucket상의 Object 목록 조회

    oci os object list -ns <object_storage_namespace> -bn <bucket_name>
    
    • 실행예시

      PS D:\> oci os ns get
      {
        "data": "cnzdbcmqu9s8"
      }
      PS D:\> oci os object list -ns cnzdbcmqu9s8 -bn ExampleBucketForCLI
      {
        "prefixes": []
      }
      
  3. Bucket에 Object 업로드

    oci os object put -ns <object_storage_namespace> -bn <bucket_name> --file <file_location> --name <object_name>  --no-multipart
    
    • Windows 실행예시

      PS D:\ForObjectStorage> dir
      
          디렉터리: D:\ForObjectStorage
      
      Mode                 LastWriteTime         Length Name
      ----                 -------------         ------ ----
      d-----      2022-01-12   오후 7:01                images
      -a----      2022-01-12   오후 5:27            152 index.html
      
      PS D:\ForObjectStorage> oci os object put -bn ExampleBucketForCLI --file index.html
      {
        "etag": "4235d07c-1ef4-42db-b64a-4fb045de2fcd",
        "last-modified": "Tue, 18 Jan 2022 02:42:23 GMT",
        "opc-content-md5": "B8Iehaa6j58u+qMiWnNldg=="
      }
      PS D:\ForObjectStorage> oci os object list -ns cnzdbcmqu9s8 -bn ExampleBucketForCLI
      {
        "data": [
          {
            "archival-state": null,
            "etag": "4235d07c-1ef4-42db-b64a-4fb045de2fcd",
            "md5": "B8Iehaa6j58u+qMiWnNldg==",
            "name": "index.html",
            "size": 152,
            "storage-tier": "Standard",
            "time-created": "2022-01-18T02:42:23.945000+00:00",
            "time-modified": "2022-01-18T02:42:23.945000+00:00"
          }
        ],
        "prefixes": []
      }
      
  4. Bucket에 Object들 벌크 업로드

    oci os object bulk-upload -ns <object_storage_namespace> -bn <bucket_name> --src-dir <source_directory_location> --no-multipart
    
    • Windows 실행예시

      PS D:\ForObjectStorage> oci os object bulk-upload -bn ExampleBucketForCLI --src-dir .
      Uploaded images/icons8-oracle-96.png  [####################################]  100%
      Uploaded index.html  [####################################]  100%
      
      {
        "skipped-objects": [],
        "upload-failures": {},
        "uploaded-objects": {
          "images/icons8-oracle-96.png": {
            "etag": "388a319c-b5d0-4a51-bacf-9d9fe84bc621",
            "last-modified": "Tue, 18 Jan 2022 03:05:04 GMT",
            "opc-content-md5": "HkJF80OO/DlmKI7usBCg4Q=="
          },
          "index.html": {
            "etag": "883369a7-4701-4bd9-8351-3fbaada61fbe",
            "last-modified": "Tue, 18 Jan 2022 03:05:05 GMT",
            "opc-content-md5": "B8Iehaa6j58u+qMiWnNldg=="
          }
        }
      }
      
  5. 결과 확인

    • 업로드 소스 폴더

      image-20220118120850546

    • 업로드 된 Objects

      폴더안의 파일은 그림처럼 업로드 되었습니다. 다만 cli로 업로드 된 파일은 application/octet-stream 타입임을 알 수 있습니다.

      image-20220118121005771

      image-20220118121256838

Multipart 업로드

큰 사이즈의 파일, 예를 들어 Custom Image 파일을 업로드할 때 업로드 시간이 많이 걸리게 됩니다. 이런경우 단일 파일을 여러 파일로 나누어 병렬로 업로드 하면 더 빠르게 업로드 할 수 있습니다. 또한 전송시 네트워크 에러 발생시 에러난 파트별도 재시도를 하여 보다 안정적으로 큰 파일을 업로드 할 수 있습니다.

oci os object put -ns <object_storage_namespace> -bn <bucket_name> --file <file_location> --name <object_name> --part-size <upload_part_size_in_MB> --parallel-upload-count <maximum_number_parallel_uploads>
  • Windows 실행예시

    2.28GB 파일을 100 MB 단위로 나누어서 동시 5개로 병렬로 업로드하는 예시로 3분 57초 걸림.

    PS D:\ForObjectStorage> date
    
    2022년 1월 18일 화요일 오후 12:25:22
    
    
    PS D:\ForObjectStorage> oci os object put -bn ExampleBucketForCLI  --file big_file.iso --part-size 100 --parallel-upload-count 5
    Upload ID: 3b38b958-3010-4d6d-5e84-55d189b787cc
    Split file into 24 parts for upload.
    Uploading object  [####################################]  100%
    {
      "etag": "2217a0e6-2ae3-4ae8-9507-03d2f36a38ec",
      "last-modified": "Tue, 18 Jan 2022 03:29:18 GMT",
      "opc-multipart-md5": "mnHbvK3Eed2+o54P1P7VgA==-24"
    }
    PS D:\ForObjectStorage> date
    
    2022년 1월 18일 화요일 오후 12:29:19
    
    
    PS D:\ForObjectStorage>
    
  • 결과확인

    image-20220118123128191

  • 참고사항

    OCI CLI –no-multipart 옵션 설명에서 처럼 128MiB이상이면, 옵션이 없어도 기본적으로 다중 분할하여 업로드 됩니다.

    By default, files above 128 MiB will be transferred in multiple parts, then combined.

    PS D:\ForObjectStorage> oci os object put -bn ExampleBucketForCLI  --file big_file.iso
    Upload ID: 75e4106e-bf1f-ffd0-5630-c78b68b6168b
    Split file into 19 parts for upload.
    Uploading object  [####################################]  100%
    {
      "etag": "cf5d681b-90a3-409c-b732-1e6c6028c046",
      "last-modified": "Tue, 18 Jan 2022 03:37:46 GMT",
      "opc-multipart-md5": "eFqxsX7ROrZUQ0HrQYI/zw==-19"
    }
    


이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.

Last updated on 18 Jan 2022