Tar
Библиотека OPI_Tar предназначена для создания, распаковки и изменения tar-архивов (в том числе .tar.gz) в 1С:Предприятие, OneScript и CLI. На этой странице — краткий обзор возможностей и типовые сценарии; подробные сигнатуры методов см. в дочерних разделах документации.
Возможности
| Задача | Метод |
|---|---|
| Запаковать каталог в tar/tar.gz | АрхивироватьКаталог |
| Распаковать весь архив в каталог | РазархивироватьКаталог |
| Извлечь только нужные файлы | РазархивироватьФайлы |
| Добавить, заменить или удалить файлы | ИзменитьАрхив |
| Получить шаблон настроек (gzip и др.) | ПолучитьСтруктуруНастроекАрхивации |
| Получить дерево файлов и каталогов | ПолучитьСписокФайлов |
| Получить метаданные и плоский список | ПолучитьМетаданные |
Архив и каталог-источник можно передать путём к файлу/каталогу на диске или двоичными данными. Если не указать путь сохранения при архивации или каталог назначения при распаковке, результат вернётся в памяти (двоичные данные или соответствие).
Типичный сценарий
Чаще всего работа выглядит так:
- Запаковать каталог —
АрхивироватьКаталог(при необходимости с gzip черезНастройки). - Посмотреть содержимое —
ПолучитьСписокФайловилиПолучитьМетаданные. - Распаковать всё —
РазархивироватьКаталог, либо изменить архив на месте —ИзменитьАрхив.
Каталог = "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.ИзменитьАрхив(ПутьАрхива, ДобавляемыеФайлы, УдаляемыеПути);
При изменении архива на диске параметры gzip должны задаваться в структуре Настройки (см. ПолучитьСтруктуруНастроекАрхивации).
Просмотр содержимого
ПолучитьСписокФайлов — иерархическое дерево каталогов и файлов.
ПолучитьМетаданные — сводная информация об архиве и плоский список файлов с характеристиками.
Дерево = OPI_Tar.ПолучитьСписокФайлов(ПутьАрхива);
Метаданные = OPI_Tar.ПолучитьМетаданные(ПутьАрхива);
Файл на диске и двоичные данные
Параметры Архив и Каталог принимают путь на диске или ДвоичныеДанные.
ДвоичныеДанные = Новый ДвоичныеДанные("C:\Архивы\архив.tar.gz");
Список = OPI_Tar.ПолучитьСписокФайлов(ДвоичныеДанные);
Результат = OPI_Tar.РазархивироватьКаталог(ДвоичныеДанные, "C:\Распаковка");
Если при распаковке не указать каталог назначения, файлы вернутся в ответе как соответствие «путь → двоичные данные». При архивации без пути сохранения вернутся ДвоичныеДанные архива.
// Содержимое архива в соответствии, без записи на диск
Описание = OPI_Tar.РазархивироватьКаталог(ДвоичныеДанные);
// Архив в памяти, без записи на диск
АрхивВПамяти = OPI_Tar.АрхивироватьКаталог(Каталог);
Для крупных архивов предпочтительнее путь к файлу на диске: так меньше расход памяти.
Подробности полей ответа, варианты CLI и примеры результатов — на страницах методов в разделах Архивация и Получение метаданных.