::: IT인터넷 :::

mc (minio client)로 MinIO 사용하기

곰탱이푸우 2022. 4. 7. 08:20
mc (minio client)의 사용법을 정리한다.
파일 이동, 계정 관리, 정책 등 MinIO 서버와 관련된 다양한 설정을 위해 MinIO 클라이언트를 사용한다.
 
사용자가 minio client를 사용하는 방법은 다음 문서를 참고한다.
관리자가 minio client를 사용하는 방법은 다음 문서를 참고한다.
Docker를 사용하여 MinIO를 설정하는 방법은 다음 포스팅을 참고한다.
MinIO의 WebUI 사용법은 아래 포스팅을 참고한다.
MinIO Client 설치와 설정 방법은 아래 포스팅을 참고한다.
WebUI 사용법에 정리한 기능을 mc로 사용하는 방법을 정리한다.
 
 

Dashboard 정보 확인

MinIO의 Dashboard에서 제공하는 정보는 아래 명령으로 간략하게 확인 가능하다.
 

간략 정보 확인

다음 명령을 사용한다.
# mc admin info MINIO_NAME

$ mc admin info minio
 
아래와 같이 출력된다. SERVERS와 DRIVES 정보까지 표시 되지는 않지만, 현재 상태 확인이 가능하다.
 

상세 정보 확인

위의 명령에 --json 플래그를 사용하면 보다 상세한 정보를 확인할 수 있다.
Dashboard에 표시 되는 SERVERS와 DRIVES 정보도 확인 가능하다.
 
다음 명령을 사용하면 JSON 포맷의 결과를 확인할 수 있다.
JSON이지만 이해하는데 무리는 없다.
# mc admin --json info MINIO_NAME

$ mc admin --json info minio
 
버킷 개수, 파일 (Object) 개수와 사용량 확인이 가능하다.
 
Dashboard의 SERVERS 항목에 표시되는 주소, 실행시간, 버전 정보도 확인 가능하다.

 

Dashboard의 DRIVES 항목에 표시되는 디스크 사용량 정보도 확인 가능하다.
 
마지막으로 MinIO가 사용하는 메모리 사용량 정보도 확인 가능하다.

 

 

Bucket 관리

Bucket 이해

Bucket은 MinIO에서 생성할 수 있는 최상위 디렉토리의 개념이다.
MinIO 내부에서 유일한 이름을 가져야 한다.
 
PostgreSQL과 같은 RDBMS 내부의 데이터베이스와 유사한 개념이다.
보통 서비스나 프로젝트 단위로 생성하며, 아래와 같은 경우에는 필요에 따라 용도별로 나눠도 된다.
 
보통 아래와 같은 경우 별도의 버킷을 제공하는 경우가 많다.
  • dev 버킷 - 개발 중 생성되는 임시 데이터 저장 목적
  • workspace - 사용자마다 자유로운 작업 공간 제공
 
이러한 임시 공간은 언제든 삭제 가능해야 하며, MinIO의 가용 공간이 부족할 경우 최우선적으로 정리해야 한다.
 

Bucket 생성

mb 명령을 사용하여 Bucket을 생성한다.
Bucket 이름은 MinIO 내부에서 유일한 이름을 가져야 한다.
# 정상 생성
$ mc mb minio/buckettest
Bucket created successfully `minio/buckettest`.

# 동일한 이름의 버킷 존재
$ mc mb minio/buckettest 
mc: <ERROR> Unable to make bucket `minio/buckettest`. 
Your previous request to create the named bucket succeeded and you already own it.
 

Bucket 목록 확인

ls 명령을 사용하면 생성 된 Bucket 목록을 확인할 수 있다.
# 버킷 목록 확인
$ mc ls MINIO_NAME

# 버킷 개수 표시
$ mc ls --summarize MINIO_NAME

$ 버킷 하위 폴더까지 모두 표시 (파일 제외)
$ mc tree MINIO_NAME
 

Bucket 삭제하기

rb 명령을 사용하면 Bucket을 삭제할 수 있다.
# 특정 버킷 삭제 (관리자는 바로 삭제, 사용자는 비어있는 경우만 가능)
$ mc rb MINIO_NAME/BUCKET_NAME

# 특정 버킷과 하위 폴더, 파일 모두 삭제 (강제 삭제)
$ mc rb --force MINIO_NAME/BUCKET_NAME

# 특정 MinIO 서버 내부의 모든 버킷과 폴더, 파일 삭제 (초기화)
$ mc rb --force --dangerous MINIO_NAME  # 관리자가 마음에 안들면 날려보자 (철컹철컹)
 
 

데이터 사용하기

WebUI만큼 편하지는 않지만 mc로 파일 업로드, 다운로드, 삭제하기가 가능하다.
 
공유하기나 내용 출력 등 다른 기능도 많지만 주로 사용하는 세 가지 기능에 집중한다.
필요한 경우 아래 문서를 참고한다.

업로드하기

파일 업로드 하는 방법은 2가지가 있다. cp 또는 mv 명령을 사용하는 것이다.
복사와 이동이라는 개념은 로컬 명령어와 동일하지만, 대상이 Object Storage라는 것이 다르다.
 
일반적으로 mv 명령은 업로드 이후 로컬 파일이 삭제 되므로, 가급적 cp 명령을 사용한다.
 
기본적으로 아래와 같은 형식이다.
# 단일 파일
$ mc cp /path/to/local/filename MINIO_NAME/bucket/folder/filename

# 2개 이상
$ mc cp /path/to/local/first/filename \  # 로컬 파일 경로 1
    /path/to/local/second/filename \  # 로컬 파일 경로 2
    MINIO_NAME/bucket/folder  # MinIO 버킷/폴더 경로 (파일명 제외)

# 특정 경로 모든 파일 업로드
$ mc cp --recursive /path/to/local/ MINIO_NAME/bucket/folder

# 폴더 업로드 (경로 마지막에 / 가 없는 것에 주의)
$ mc cp --recursive /path/to/local/path MINIO_NAME/bucket/folder

# 추가 활용 예제 확인
$ mc cp --help

 

다운로드하기

다운로드는 업로드와 동일하다. 파일을 저장할 경로가 로컬 경로인 것에 주의한다.
 
기본적으로 아래와 같은 형식이다.
# 단일 파일
$ mc cp MINIO_NAME/bucket/folder/filename /path/to/local/filename

# 2개 이상
$ mc cp MINIO_NAME/bucket/folder1/filename \  # MinIO 파일 경로 1
    MINIO_NAME/bucket/folder2/filename \  # MinIO 파일 경로 2
    /path/to/local  # 로컬 경로 (파일명 제외)

# 특정 경로 모든 파일 다운로드
$ mc cp --recursive MINIO_NAME/bucket/folder/ /path/to/local/path

# 폴더 다운로드 (경로 마지막에 / 가 없는 것에 주의)
$ mc cp minio/buckettest/test/ testdata/WindowsPowerShell

# 추가 활용 예제 확인
$ mc cp --help
 
 

복사와 이동하기

MinIO의 특정 경로에 있는 파일이나 폴더를 MinIO의 다른 경로에 복사하는 것만 설명하고 이동은 생략한다.
복사 이후 원본 파일이 남아있는지 여부만 차이가 있기 때문이다.
 
파일 이동은 cp 대신 mv 명령을 사용한다.
 
기본적으로 아래와 같은 형식이다
# 단일 파일
$ mc cp MINIO_NAME/bucket/src_folder/filename MINIO_NAME/bucket/dst_folder/filename
# 여러 파일
$ mc cp MINIO_NAME/bucket/src_folder1/filename \  # MinIO 파일 경로 1
    MINIO_NAME/bucket/src_folder2/filename \  # MinIO 파일 경로 2
    MINIO_NAME/bucket/dst_folder/  # MinIO 파일 경로 3

# 특정 경로 모든 파일
$ mc cp --recursive MINIO_NAME/bucket/src_folder/ MINIO_NAME/bucket/dst_folder

# 폴더 복사/이동
$ mc cp --recursive /path/to/local/path MINIO_NAME/bucket/folder

# 추가 활용 예제 확인
$ mc cp --help
 

삭제하기

삭제하는 방법 역시 로컬 명령어와 비슷하다.
 
기본적으로 아래와 같은 형식이다.
# 단일 파일
$ mc rm MINIO_NAME/bucket/folder/filename

# 여러 파일
$ mc rm MINIO_NAME/bucket/folder1/filename \  # MinIO 파일 경로 1
    MINIO_NAME/bucket/folder2/filename \  # MinIO 파일 경로 2

# 폴더 삭제
$ mc rm --recursive MINIO_NAME/bucket/folder

# 오류가 발생하는 경우 --force 옵션 추가 (강제 삭제이므로 주의 필요!!!!!)
$ mc rm --recursive --force MINIO_NAME/bucket/folder

# 추가 활용 예제 확인
$ mc rm --help
 
참고로 특정 폴더의 모든 파일을 삭제하면 MinIO에서 해당 폴더는 자동으로 사라진다.
MinIO에서 폴더 경로는 메타 정보인 것을 참고한다.
 

목록 확인하기

ls 명령을 사용하면 특정 경로에 생성 된 Object (파일, 폴더) 목록을 확인할 수 있다.
$ mc ls MINIO_NAME\folder\path

# Object 개수와 용량 표시 (하위 경로 포함 X)
$ mc ls --summarize MINIO_NAME\folder\path

# 하위 경로 목록 확인
$ mc ls --recursive MINIO_NAME\folder\path

# 하위 경로 폴더 경로만 확인
$ mc tree MINIO_NAME\folder\path
 
 

MinIO 관리

계정 관리

mc의 admin 기능의 user 명령으로 MinIO의 계정 관리를 수행한다.
# 계정 추가 (add)
$ mc admin user add MINIO_NAME ACCESS_KEY(ID) SECRET_KEY(PASSWORD)

# ACCESS_KEY, SECRETKEY 수동 입력
$ mc admin user add MINIO_NAME

# 계정 비활성화 (활성화는 enable)
$ mc admin user disable MINIO_NAME ACCESS_KEY

# 계정 삭제
$ mc admin user remove MINIO_NAME ACCESS_KEY

# 계정 목록 출력
$ mc admin user list --json MINIO_NAME

# 특정 계정 정보 출력
$ mc admin user info MINIO_NAME ACCESS_KEY
 

그룹 관리

MinIO에서는 사용자들을 분류 기준에 맞게 묶어서 관리할 수 있는 그룹 기능을 제공한다.
mc (MinIO Client)에서는 admin 기능의 group 명령으로 MinIO의 그룹 관리를 수행한다.
# 그룹에 계정 추가 (add)
# 해당 그룹이 없을 경우 생성 된다.
$ mc admin group add MINIO_NAME GROUP_NAME ACCESS_KEY(ID) ...

# 그룹에서 계정 제거 (remove)
$ mc admin group remove MINIO_NAME GROUP_NAME ACCESS_KEY(ID) ...

# 그룹 제거 (remove)
# 해당 그룹에 포함된 계정이 없을때만 동작
$ mc admin group remove MINIO_NAME GROUP_NAME

# 특정 그룹 정보 출력
$ mc admin group info MINIO_NAME GROUP_NAME

# 그룹 목록 출력
$ mc admin group list MINIO_NAME

# 그룹 비활성화 (활성화는 enable)
$ mc admin group disable MINIO_NAME GROUP_NAME
 
 

정책 관리

MinIO에서 계정이나 그룹에 권한을 부여하거나 추가로 직접 권한을 생성하고 싶은 경우 사용한다.
 
MinIO에서 제공하는 기본 권한은 다음과 같다.
  • consoleAdmin - 관리자
  • diagnostics - MinIO 진단 기능 접근 권한
  • readonly - 읽기 전용 (자동화 계정)
  • readwrite - 읽기/쓰기 가능 (일반 사용자)
  • writeonly - 쓰기 전용 (자동화 계정)
 
mc (MinIO Client)에서는 admin 기능의  policy 명령으로 MinIO의 권한 관리를 수행한다.
# 권한 목록 출력 
$ mc admin policy list MINIO_NAME

# 새로운 권한 추가
$ mc admin policy add MINIO_NAME POLICY_NAME /path/to/json/file

# 기존 권한 제거 (remove)
$ mc admin policy remove MINIO_NAME POLICY_NAME

# 특정 권한 정보 출력 
$ mc admin policy info MINIO_NAME POLICY_NAME

# 특정 사용자의 권한 할당/변경
$ mc admin policy set MINIO_NAME POLICY_NAME user=ACCESS_KEY

# 특정 그룹의 권한 할당/변경
$ mc admin policy set MINIO_NAME POLICY_NAME group=GROUP_NAME
 
새로운 권한을 추가하기 위해서는 JSON 포맷의 권한 정의 파일이 필요하다.
별도의 추가 권한을 사용하지 않을 것이므로 별도 정리는 하지 않는다.
 
MinIO의 경우 S3 API의 권한 설정을 가져다 쓰고 있으며, JSON 작성 방법은 아래 문서들을 참고한다.