---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ytsaurus.tech/docs/en/user-guide/storage/files.md
  - https://ytsaurus.tech/docs/ru/user-guide/storage/files.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ytsaurus.tech/docs/ru/llms.txt

<!-- source: ru/_includes/user-guide/storage/files.md -->
# Файлы

В данном разделе содержится информация об объектах системы YTsaurus, которые предназначены для хранения больших бинарных данных. Также, бинарные данные можно хранить в [таблицах](https://ytsaurus.tech/docs/ru/user-guide/storage/blobtables.md).

## Общие сведения { #common }

Файл — это узел [Кипариса](https://ytsaurus.tech/docs/ru/user-guide/storage/cypress.md), имеющий тип **file** и предназначенный для хранения больших бинарных данных в системе.

Бинарные данные можно хранить не только в файлах, но и в таблицах.

Иногда необходимо из джобов сохранять бинарные данные. Очевидное решение заключается в том, чтобы записывать из каждого джоба файл в Кипарис. Однако данный способ имеет ряд недостатков:

- Создается высокая нагрузку на прокси-сервер;
- Появляется большое количество объектов в Кипарисе, что негативно сказывается на эффективности работы с ними.

В качестве решения предлагается другой способ — писать бинарные данные в одну таблицу.

## Использование { #usage }

Файлы поддерживают операцию записи в конец: [команда](https://ytsaurus.tech/docs/ru/api/commands.md#write_file) `write_file`. При этом запись производится путем добавления [чанков](https://ytsaurus.tech/docs/ru/user-guide/storage/chunks.md), поэтому делать много мелких записей не рекомендуется.

Для чтения файлов используется [команда](https://ytsaurus.tech/docs/ru/api/commands.md#read_file) `read_file`. Можно читать файл либо целиком, либо указав диапазон чтения в виде смещений в байтах. Для этого используйте селектор `offset` языка [YPath](https://ytsaurus.tech/docs/ru/user-guide/storage/ypath.md).
Каждое чтение требует запроса метаданных мастер-сервера, поэтому не рекомендуется делать много чтений.

### Использование в джобах  { #usage_in_jobs }

Одно из применений файлов — доставка одних и тех же данных, например, справочников, для [джобов](https://ytsaurus.tech/docs/ru/user-guide/data-processing/operations/overview.md). При этом чанки файла скачиваются в локальный кэш на каждом узле, где потребовался файл.

Когда файл состоит из двух и более чанков или для него задан `compression_codec`, из [чанков](https://ytsaurus.tech/docs/ru/user-guide/storage/chunks.md) формируется оригинальный файл в кэше. Такой файл называется артефактом. Существует два способа доставки артефакта в файл в `sandbox` джоба — специальную директорию, созданную для каждого джоба:

- По умолчанию в `sandbox` джоба будет создана [ссылка](https://ytsaurus.tech/docs/ru/user-guide/storage/links.md) на артефакт. Такое поведение является предпочтительным, так как работает быстрее и создает меньше IO-нагрузки на жесткие диски.

- Если в спецификации указана опция `copy_file`, файл будет скопирован в `sandbox`. Такое поведение стоит использовать, только если требуется смонтировать весь `sandbox` в [tmpfs](https://ru.wikipedia.org/wiki/Tmpfs).

Если для файла атрибут `executable` имеет значение `true`, в `sandbox` джоба он будет исполняемым. По умолчанию атрибут имеет значение `false`.

С помощью атрибута `file_name` можно контролировать имя файла или ссылки, созданных в `sandbox`. При отсутствии этого атрибута используется имя файла из [Кипариса](https://ytsaurus.tech/docs/ru/user-guide/storage/cypress.md).

## Системные атрибуты { #attributes }

Любой файл имеет атрибуты, представленные в таблице ниже.
Количество байт в файле содержится в атрибуте `uncompressed_data_size`, который есть у всех владельцев чанков.

| **Атрибут**  | **Тип**   | **Описание**                                       | **Обязательный** |
| ------------ | --------- | -------------------------------------------------- |------------------|
| `executable` | `bool`   | Является ли файл исполнимым.                       | Нет               |
| `file_name`  | `string` | Имя файла при перемещении его в `sandbox` к джобу. | Нет               |

Все файлы являются владельцами чанков, поэтому получают соответствующие [атрибуты](https://ytsaurus.tech/docs/ru/user-guide/storage/chunks.md#attributes).
<!-- endsource: ru/_includes/user-guide/storage/files.md -->