> ## 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/ru/reference/settings/server-settings/settings#logger) регистрируемых событий, по умолчанию `none`.
* `--disk` -- какой диск использовать для команд `mkdir, move, read, write, remove`. По умолчанию `default`.
* `--query, -q` -- одиночный запрос, который можно выполнить без запуска интерактивного режима
* `--help, -h` -- вывести все параметры и команды с описанием

<div id="lazy-initialization">
  ## Ленивая инициализация
</div>

Все диски, доступные в конфигурации, инициализируются лениво. Это означает, что объект, соответствующий диску, инициализируется только тогда, когда этот диск используется в какой-либо команде. Это сделано, чтобы повысить устойчивость утилиты и избежать обращения к дискам, описанным в конфигурации, но не используемым пользователем, которые могут вызвать ошибку при инициализации. Однако при запуске clickhouse-disks должен инициализироваться хотя бы один диск. Этот диск задаётся параметром `--disk` в командной строке (значение по умолчанию — `default`).

<div id="default-disks">
  ## Диски по умолчанию
</div>

После запуска доступны два диска, которые не указаны в конфигурации, но могут быть инициализированы.

1. **`local` Disk**: Этот диск предназначен для эмуляции локальной файловой системы, из которой была запущена утилита `clickhouse-disks`. Его исходный путь — каталог, из которого был запущен `clickhouse-disks`, а сам диск смонтирован в корень файловой системы.

2. **`default` Disk**: Этот диск смонтирован в локальной файловой системе в каталог, указанный параметром `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>`
  Перейти в каталог по пути `path` на диске `disk` (значение по умолчанию — текущий диск). Переключения диска не происходит.
* `copy (cp) [--disk-from disk_1] [--disk-to disk_2] <path-from> <path-to>`.
  Рекурсивно скопировать данные из `path-from` на диске `disk_1` (значение по умолчанию — текущий диск (параметр `disk` в неинтерактивном режиме))
  в `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]`
  Просмотреть sidecar-файл delete-bitmap (`.rbm`) по пути `path-from`. Выводит сигнатуру и версию, корректность CRC, мощность (число удалённых строк) и диапазон строк. С `--values` также выводит все установленные биты (смещения удалённых строк) в порядке возрастания.
* `switch-disk [--path path] <disk>`
  Переключиться на диск `disk` по пути `path` (если `path` не указан, значением по умолчанию будет предыдущий путь на диске `disk`).
* `write (w) [--path-from path] <path-to>`.
  Записать файл из `path` (`stdin`, если `path` не указан; ввод должен завершаться по Ctrl+D) в `path-to`.
* `wc <path> [--bytes] [--lines] [--words]`
  Подсчитать количество байтов, строк и слов в файле по пути `path` на текущем диске (как Unix `wc`). Без флагов выводятся все три значения в порядке: строки, слова, затем байты. Используйте `--bytes` (`-c`), `--lines` (`-l`), `--words` (`-w`) для вывода конкретных значений.
* `sed <expression> <path>`
  Применить `sed`-выражение `expression` к файлу по пути `path` на текущем диске с изменением на месте. Требуется, чтобы `sed` был установлен на хосте. Поддерживается только одно выражение `sed` без опций (например, `'s/foo/bar/g'`, `'/foo/d'`), а не несколько выражений (`-e ... -e ...`) и не опции, объединённые с адресом (например, `-n` с `4,10p`).
* `read-checksums <path>`
  Прочитать файл `checksums.txt` data part `MergeTree` на текущем диске и вывести его в `stdout` как удобочитаемую таблицу с разделением табуляцией и столбцами `name`, `file_size`, `file_hash`, `uncompressed_size` и `uncompressed_hash`. Последние два столбца присутствуют только для сжатых файлов.
