> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Clickhouse-disks 문서

# Clickhouse-disks

ClickHouse 디스크에서 파일 시스템과 유사한 작업을 수행할 수 있는 유틸리티입니다. 대화형 모드와 비대화형 모드 모두에서 사용할 수 있습니다.

<div id="program-wide-options">
  ## 프로그램 전체 옵션
</div>

* `--config-file, -C` -- ClickHouse 구성 파일 경로이며, 기본값은 `/etc/clickhouse-server/config.xml`입니다.
* `--save-logs` -- 호출된 명령의 진행 로그를 `/var/log/clickhouse-server/clickhouse-disks.log`에 기록합니다.
* `--log-level` -- 기록할 이벤트의 [유형](/docs/ko/reference/settings/server-settings/settings#logger)이며, 기본값은 `none`입니다.
* `--disk` -- `mkdir, move, read, write, remove` 명령에 사용할 디스크를 지정합니다. 기본값은 `default`입니다.
* `--query, -q` -- 대화형 모드를 시작하지 않고 실행할 수 있는 단일 쿼리입니다.
* `--help, -h` -- 설명과 함께 모든 옵션과 명령을 출력합니다.

<div id="lazy-initialization">
  ## 지연 초기화
</div>

config에서 사용할 수 있는 모든 디스크는 지연 초기화됩니다. 즉, 디스크에 해당하는 객체는 해당 디스크가 어떤 명령에서 실제로 사용될 때만 초기화됩니다. 이렇게 하는 이유는 유틸리티의 안정성을 높이고, config에 정의되어 있지만 사용되지 않아 초기화 과정에서 실패할 수 있는 디스크에 불필요하게 접근하지 않기 위해서입니다. 다만, `clickhouse-disks`를 시작할 때 초기화되는 디스크가 하나는 있어야 합니다. 이 디스크는 명령줄의 `--disk` 매개변수로 지정하며, 기본값은 `default`입니다.

<div id="default-disks">
  ## 기본 디스크
</div>

실행 후에는 구성에 지정되지 않았지만 초기화에 사용할 수 있는 디스크가 2개 있습니다.

1. **`local` 디스크**: 이 디스크는 `clickhouse-disks` 유틸리티를 실행한 로컬 파일 시스템을 모방하도록 설계되었습니다. 초기 경로는 `clickhouse-disks`를 시작한 디렉터리이며, 파일 시스템의 루트 디렉터리에 마운트됩니다.

2. **`default` 디스크**: 이 디스크는 구성의 `clickhouse/path` 매개변수에 지정된 디렉터리의 로컬 파일 시스템에 마운트됩니다(기본값은 `/var/lib/clickhouse`입니다). 초기 경로는 `/`로 설정됩니다.

<div id="clickhouse-disks-state">
  ## Clickhouse-disks 상태
</div>

유틸리티는 추가된 각 디스크의 현재 디렉터리를 저장합니다(일반적인 파일 시스템과 마찬가지임). 사용자는 현재 디렉터리를 변경하고 디스크 간에 전환할 수 있습니다.

상태는 "`disk_name`:`path_name`" 형태의 프롬프트에 반영됩니다.

<div id="commands">
  ## 명령어
</div>

이 문서 파일에서는 모든 필수 위치 인수를 `<parameter>`로, 이름 있는 인수는 `[--parameter value]`로 표기합니다. 모든 위치 매개변수는 해당하는 이름의 이름 있는 매개변수로도 지정할 수 있습니다.

* `cd (change-dir, change_dir) [--disk disk] <path>`
  `disk` 디스크의 `path` 경로로 디렉터리를 변경합니다(기본값은 현재 디스크). 디스크는 전환되지 않습니다.
* `copy (cp) [--disk-from disk_1] [--disk-to disk_2] <path-from> <path-to>`.
  `disk_1` 디스크의 `path-from`에서 `path-to`로 데이터를 재귀적으로 복사합니다(`disk_1`의 기본값은 현재 디스크이며, 비대화형 모드에서는 매개변수 `disk`).
  대상은 `disk_2` 디스크의 `path-to`입니다(`disk_2`의 기본값은 현재 디스크이며, 비대화형 모드에서는 매개변수 `disk`).
* `current_disk_with_path (current, current_disk, current_path)`
  현재 상태를 다음 포맷으로 출력합니다:
  `Disk: "current_disk" Path: "current path on current disk"`
* `du [--human-readable] [<path>]`
  현재 디스크의 `path`에 있는 파일 또는 디렉터리의 전체 크기를 바이트 단위로 출력합니다. 디렉터리인 경우 포함된 모든 파일의 크기를 재귀적으로 합산합니다. `path`를 지정하지 않으면 현재 디렉터리를 사용합니다. `--human-readable`(`-h`)를 사용하면 크기를 사람이 읽기 쉬운 포맷(예: `1.23 GiB`)으로 출력합니다.
* `help [<command>]`
  `command` 명령어의 도움말 메시지를 출력합니다. `command`를 지정하지 않으면 모든 명령어에 대한 정보를 출력합니다.
* `move (mv) <path-from> <path-to>`.
  현재 디스크 내에서 파일 또는 디렉터리를 `path-from`에서 `path-to`로 이동합니다.
* `remove (rm, delete) <path>`.
  현재 디스크에서 `path`를 재귀적으로 삭제합니다.
* `link (ln) <path-from> <path-to>`.
  현재 디스크에서 `path-from`에서 `path-to`로 하드 링크를 생성합니다.
* `list (ls) [--recursive] <path>`
  현재 디스크의 `path`에 있는 파일을 나열합니다. 기본값은 비재귀입니다.
* `list-disks (list_disks, ls-disks, ls_disks)`.
  디스크 이름을 나열합니다.
* `mkdir [--recursive] <path>` 현재 디스크에서 실행합니다.
  디렉터리를 생성합니다. 기본값은 비재귀입니다.
* `read (r) <path-from> [--path-to path]`
  `path-from`의 파일을 읽어 `path`로 출력합니다(지정하지 않으면 `stdout`).
* `read-bitmap <path-from> [--values]`
  `path-from`에 있는 delete-bitmap(`.rbm`) 사이드카를 검사합니다. 매직과 버전, CRC 유효성, 카디널리티(삭제된 행 수), 그리고 행 범위를 출력합니다. `--values`를 사용하면 모든 set bits(삭제된 행 오프셋)도 오름차순으로 덤프합니다.
* `switch-disk [--path path] <disk>`
  `path` 경로의 `disk` 디스크로 전환합니다(`path`를 지정하지 않으면 기본값은 `disk` 디스크의 이전 경로).
* `write (w) [--path-from path] <path-to>`.
  `path`의 파일을 `path-to`에 씁니다(`path`를 지정하지 않으면 `stdin`을 사용하며, 입력은 Ctrl+D로 종료해야 합니다).
* `wc <path> [--bytes] [--lines] [--words]`
  현재 디스크의 `path`에 있는 파일의 바이트 수, 줄 수, 단어 수를 계산합니다(Unix `wc`와 동일). 플래그를 지정하지 않으면 세 가지 개수를 줄 수, 단어 수, 바이트 수 순서로 모두 출력합니다. 특정 개수만 선택하려면 `--bytes`(`-c`), `--lines`(`-l`), `--words`(`-w`)를 사용합니다.
* `sed <expression> <path>`
  현재 디스크의 `path`에 있는 파일에 `sed` `expression`을 제자리에서 적용합니다. 호스트에 `sed`가 설치되어 있어야 합니다. 옵션 없이 단일 `sed` 표현식만 지원합니다(예: `'s/foo/bar/g'`, `'/foo/d'`). 여러 표현식(`-e ... -e ...`)이나 주소와 함께 사용하는 옵션(예: `4,10p`와 함께 사용하는 `-n`)은 지원하지 않습니다.
* `read-checksums <path>`
  현재 디스크에 있는 `MergeTree` 데이터 파트의 `checksums.txt` 파일을 읽어 `stdout`에 탭으로 구분된 사람이 읽기 쉬운 표로 출력합니다. 컬럼은 `name`, `file_size`, `file_hash`, `uncompressed_size`, `uncompressed_hash`입니다. 마지막 두 컬럼은 압축된 파일에만 존재합니다.
