Перейти к основному содержимому

Tar

Модуль 1С/OSOPI_TarКоманда CLItar#Использоватьoint/formats/tar

Библиотека OPI_Tar предназначена для создания, распаковки и изменения tar-архивов (в том числе .tar.gz) в 1С:Предприятие, OneScript и CLI. На этой странице — краткий обзор возможностей и типовые сценарии; подробные сигнатуры методов см. в дочерних разделах документации.

Возможности

ЗадачаМетод
Запаковать каталог в tar/tar.gzАрхивироватьКаталог
Распаковать весь архив в каталогРазархивироватьКаталог
Извлечь только нужные файлыРазархивироватьФайлы
Добавить, заменить или удалить файлыИзменитьАрхив
Получить шаблон настроек (gzip и др.)ПолучитьСтруктуруНастроекАрхивации
Получить дерево файлов и каталоговПолучитьСписокФайлов
Получить метаданные и плоский списокПолучитьМетаданные

Архив и каталог-источник можно передать путём к файлу/каталогу на диске или двоичными данными. Если не указать путь сохранения при архивации или каталог назначения при распаковке, результат вернётся в памяти (двоичные данные или соответствие).

Типичный сценарий

Чаще всего работа выглядит так:

  1. Запаковать каталог — АрхивироватьКаталог (при необходимости с gzip через Настройки).
  2. Посмотреть содержимое — ПолучитьСписокФайлов или ПолучитьМетаданные.
  3. Распаковать всё — РазархивироватьКаталог, либо изменить архив на месте — ИзменитьАрхив.
Каталог = "C:\Данные\проект";
ПутьАрхива = "C:\Архивы\проект.tar.gz";

// 1. Создание tar.gz
Настройки = OPI_Tar.ПолучитьСтруктуруНастроекАрхивации(Истина);
Настройки["gzip"] = Истина;
Настройки["gzip_level"] = 6;

Результат = OPI_Tar.АрхивироватьКаталог(Каталог, ПутьАрхива, Настройки);

// 2. Просмотр содержимого
Список = OPI_Tar.ПолучитьСписокФайлов(ПутьАрхива);

Архивация

АрхивироватьКаталог запаковывает файлы указанного каталога. Второй параметр — путь сохранения; если его не указать, архив вернётся как ДвоичныеДанные.

Каталог = "C:\МойКаталог";
ПутьАрхива = "C:\Архивы\архив.tar";

Результат = OPI_Tar.АрхивироватьКаталог(Каталог, ПутьАрхива);

Настройки gzip

ПолучитьСтруктуруНастроекАрхивации возвращает структуру дополнительных параметров:

  • gzip — применять gzip-сжатие: Истина/Ложь (по умолчанию Ложь)
  • gzip_level — уровень сжатия от 0 до 9 (по умолчанию 6)
Настройки = OPI_Tar.ПолучитьСтруктуруНастроекАрхивации(Истина);
Настройки["gzip"] = Истина;
Настройки["gzip_level"] = 9;

Результат = OPI_Tar.АрхивироватьКаталог(Каталог, "C:\Архивы\архив.tar.gz", Настройки);
подсказка

Для максимального сжатия используйте gzip_level = 9; для более быстрого создания архива — меньшие значения (например, 1–3).

Распаковка

Весь архив

РазархивироватьКаталог извлекает все файлы в указанный каталог.

ПутьАрхива = "C:\Архивы\архив.tar";
КаталогНазначения = "C:\Распаковка";

Результат = OPI_Tar.РазархивироватьКаталог(ПутьАрхива, КаталогНазначения);

Отдельные файлы

РазархивироватьФайлы принимает массив полных путей внутри архива.

Пути = Новый Массив;
Пути.Добавить("docs/readme.txt");
Пути.Добавить("config/settings.json");

Результат = OPI_Tar.РазархивироватьФайлы(ПутьАрхива, Пути, КаталогНазначения);
подсказка

Пути внутри tar обычно используют прямой слэш (/). Перед выборочной распаковкой надёжнее сначала вызвать ПолучитьСписокФайлов или ПолучитьМетаданные.

Модификация архива

ИзменитьАрхив добавляет, заменяет или удаляет файлы в существующем архиве. Архив на диске изменяется на месте; параметры gzip задаются в Настройки.

ПутьАрхива = "C:\Архивы\архив.tar";

ДобавляемыеФайлы = Новый Соответствие;
ДобавляемыеФайлы.Вставить("docs/new.txt", "C:\Файлы\новый.txt");

УдаляемыеПути = Новый Массив;
УдаляемыеПути.Добавить("old/obsolete.txt");

Результат = OPI_Tar.ИзменитьАрхив(ПутьАрхива, ДобавляемыеФайлы, УдаляемыеПути);
important

При изменении архива на диске параметры gzip должны задаваться в структуре Настройки (см. ПолучитьСтруктуруНастроекАрхивации).

Просмотр содержимого

ПолучитьСписокФайлов — иерархическое дерево каталогов и файлов.

ПолучитьМетаданные — сводная информация об архиве и плоский список файлов с характеристиками.

Дерево = OPI_Tar.ПолучитьСписокФайлов(ПутьАрхива);
Метаданные = OPI_Tar.ПолучитьМетаданные(ПутьАрхива);

Файл на диске и двоичные данные

Параметры Архив и Каталог принимают путь на диске или ДвоичныеДанные.

ДвоичныеДанные = Новый ДвоичныеДанные("C:\Архивы\архив.tar.gz");

Список = OPI_Tar.ПолучитьСписокФайлов(ДвоичныеДанные);
Результат = OPI_Tar.РазархивироватьКаталог(ДвоичныеДанные, "C:\Распаковка");

Если при распаковке не указать каталог назначения, файлы вернутся в ответе как соответствие «путь → двоичные данные». При архивации без пути сохранения вернутся ДвоичныеДанные архива.

// Содержимое архива в соответствии, без записи на диск
Описание = OPI_Tar.РазархивироватьКаталог(ДвоичныеДанные);

// Архив в памяти, без записи на диск
АрхивВПамяти = OPI_Tar.АрхивироватьКаталог(Каталог);
подсказка

Для крупных архивов предпочтительнее путь к файлу на диске: так меньше расход памяти.

примечание

Подробности полей ответа, варианты CLI и примеры результатов — на страницах методов в разделах Архивация и Получение метаданных.