MariaARK - это полнофункциональный консольный архиватор с поддержкой множества алгоритмов сжатия, шифрования, многотомных архивов и множества других продвинутых функций.
- Возможности
- Установка
- Быстрый старт
- Команды
- Опции
- Методы сжатия
- Примеры использования
- Формат архива
- Технические детали
- Известные ограничения
- Лицензия
- ✅ Множество алгоритмов сжатия: STOR, DEFL, LZ77, LZSS, LZW, LZHF
- ✅ Шифрование: AES-256 с паролем
- ✅ Многотомные архивы: Разбиение на тома заданного размера
- ✅ Солидные архивы: Максимальное сжатие всех файлов как единого блока
- ✅ Рекурсивное архивирование: Автоматическое добавление подкаталогов
- ✅ Режим обновления: Обновление только измененных файлов
- ✅ Исключения: Исключение файлов по маскам
- ✅ Комментарии: Комментарии к архиву и отдельным файлам
- ✅ Пароли файлов: Отдельные пароли для отдельных файлов
- ✅ Wildcards: Поддержка масок
*и? - ✅ Прогресс-бар: Визуальная индикация процесса
- ✅ CRC32: Проверка целостности данных
- ✅ Резервные копии: Автоматическое создание
.bakфайлов
- ✅ Сохранение структуры каталогов
- ✅ Сохранение атрибутов файлов и дат
- ✅ Цветной вывод в консоли
- ✅ Предупреждения о больших файлах (>2GB)
- ✅ Валидация путей и имен файлов
- ✅ Обработка ошибок с подробными сообщениями
- ✅ Фабрика компрессоров: Упрощенное создание и управление компрессорами
- ✅ Валидация версий: Проверка совместимости версий формата
- ✅ Улучшенный алгоритм Хаффмана: Оптимизированное сжатие для LZHF
- ✅ Защита от timing attacks: Безопасная проверка паролей
- Windows (протестировано на Windows 10)
- .NET Framework 4.5 или выше
- MSBuild 14.0 или выше (для компиляции)
# Клонируйте репозиторий
git clone <repository-url>
cd archivers_marc
# Скомпилируйте проект
"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" MariaARK.sln /t:Build /p:Configuration=Release
# Исполняемый файл будет в:
# MariaARK\bin\Release\MariaARK.exeПросто скопируйте MariaARK.exe в любую директорию и добавьте её в PATH, или используйте полный путь к файлу.
# Создать архив с файлами
MariaARK.exe a archive.mark file1.txt file2.txt
# Просмотреть содержимое
MariaARK.exe l archive.mark
# Извлечь все файлы
MariaARK.exe x archive.mark
# Проверить целостность
MariaARK.exe t archive.mark# Создать архив с Deflate сжатием
MariaARK.exe a archive.mark *.txt -mDEFL
# С максимальным уровнем сжатия
MariaARK.exe a archive.mark *.txt -mDEFL -l9# Создать архив с паролем
MariaARK.exe a archive.mark *.txt -p"мой_пароль" -mDEFL
# При извлечении будет запрошен пароль
MariaARK.exe x archive.markСм. также: QUICKSTART.md для более подробных примеров.
Создает новый архив или обновляет существующий.
Синтаксис:
MariaARK.exe a <archive.mark> <file1> [file2] ... [опции]
Примеры:
# Простое создание архива
MariaARK.exe a archive.mark file1.txt file2.txt
# С методом сжатия
MariaARK.exe a archive.mark *.txt -mDEFL
# С рекурсией
MariaARK.exe a archive.mark folder -r -mDEFL
# С исключениями
MariaARK.exe a archive.mark folder -r -x"*.tmp" -x"*.log"Извлекает файлы из архива.
Синтаксис:
MariaARK.exe x <archive.mark> [output_path] [pattern/files]
Примеры:
# Извлечь все файлы в текущую директорию
MariaARK.exe x archive.mark
# Извлечь в указанную директорию
MariaARK.exe x archive.mark C:\output
# Извлечь только определенные файлы
MariaARK.exe x archive.mark . file1.txt file2.txt
# Извлечь по маске
MariaARK.exe x archive.mark . *.txtПоказывает список файлов в архиве.
Синтаксис:
MariaARK.exe l <archive.mark> [pattern]
Примеры:
# Показать все файлы
MariaARK.exe l archive.mark
# Показать только .txt файлы
MariaARK.exe l archive.mark *.txtПроверяет целостность архива с помощью CRC32.
Синтаксис:
MariaARK.exe t <archive.mark> [pattern]
Примеры:
# Проверить весь архив
MariaARK.exe t archive.mark
# Проверить только определенные файлы
MariaARK.exe t archive.mark *.txtУдаляет файлы из архива.
Синтаксис:
MariaARK.exe d <archive.mark> <pattern>
Примеры:
# Удалить файл
MariaARK.exe d archive.mark file1.txt
# Удалить по маске
MariaARK.exe d archive.mark *.tmpУказывает метод сжатия для файлов.
Доступные методы:
STOR- Без сжатия (по умолчанию)DEFL- DeflateLZ77- LZ77LZSS- LZSSLZW- LZWLZHF- LZ77 + Adaptive Huffman
Пример:
MariaARK.exe a archive.mark *.txt -mDEFLУстанавливает уровень сжатия для Deflate алгоритма.
1- Быстрое сжатие (минимальное)5- Среднее (по умолчанию)9- Максимальное сжатие (медленнее)
Пример:
MariaARK.exe a archive.mark *.txt -mDEFL -l9Устанавливает пароль для шифрования архива (AES-256).
Пример:
MariaARK.exe a archive.mark *.txt -p"мой_секретный_пароль" -mDEFLПримечание: Пароль будет запрошен при извлечении, если не указан в командной строке.
Создает многотомный архив с указанным размером тома.
Формат размера:
K- Килобайты (например,100K)M- Мегабайты (например,100M)G- Гигабайты (например,1G)
Пример:
# Создать архив с томами по 100 МБ
MariaARK.exe a archive.mark *.txt -v100M -mDEFL
# Результат: archive.part1.mark, archive.part2.mark, ...Создает солидный архив, где все файлы сжимаются как единый блок. Это обеспечивает лучшее сжатие, но требует распаковки всего блока для извлечения любого файла.
Пример:
MariaARK.exe a archive.mark *.txt -s -mDEFLРекурсивно добавляет все файлы из указанных каталогов и подкаталогов.
Пример:
MariaARK.exe a archive.mark folder -r -mDEFLИсключает файлы, соответствующие указанной маске.
Пример:
# Исключить временные файлы и логи
MariaARK.exe a archive.mark folder -r -x"*.tmp" -x"*.log" -mDEFLОбновляет только измененные файлы в существующем архиве. Файл считается измененным, если изменился его размер или дата модификации.
Пример:
# Создать архив
MariaARK.exe a archive.mark *.txt -mDEFL
# Обновить только измененные файлы
MariaARK.exe a archive.mark *.txt -u -mDEFLСоздает резервную копию (.bak) перед обновлением существующего архива.
Пример:
MariaARK.exe a archive.mark *.txt -u -b -mDEFLДобавляет комментарий к следующему файлу в списке.
Пример:
MariaARK.exe a archive.mark file1.txt -c"Важный файл" file2.txt -mDEFLПримечание: В текущей версии комментарии к отдельным файлам поддерживаются на уровне API, но не полностью интегрированы в CLI.
Просто копирует данные без сжатия. Самый быстрый метод, но не уменьшает размер.
Использование:
MariaARK.exe a archive.mark *.txt -mSTORПрименение: Когда скорость важнее размера, или для уже сжатых файлов.
Стандартный алгоритм сжатия, используемый в ZIP. Хороший баланс между скоростью и степенью сжатия.
Использование:
# Средний уровень (по умолчанию)
MariaARK.exe a archive.mark *.txt -mDEFL
# Максимальное сжатие
MariaARK.exe a archive.mark *.txt -mDEFL -l9Применение: Универсальный выбор для большинства случаев.
Классический алгоритм Lempel-Ziv 1977. Использует скользящее окно 8KB.
Использование:
MariaARK.exe a archive.mark *.txt -mLZ77Применение: Для текстовых файлов с повторяющимися паттернами.
Lempel-Ziv-Storer-Szymanski. Улучшенная версия LZ77 с окном 4KB.
Использование:
MariaARK.exe a archive.mark *.txt -mLZSSПрименение: Для небольших файлов с повторяющимися данными.
Lempel-Ziv-Welch. Использует словарь для сжатия.
Использование:
MariaARK.exe a archive.mark *.txt -mLZWПрименение: Для файлов с повторяющимися последовательностями.
Комбинация LZ77 и адаптивного кодирования Хаффмана. Использует LZ77 для поиска повторений и адаптивное дерево Хаффмана для эффективного кодирования символов.
Использование:
MariaARK.exe a archive.mark *.txt -mLZHFПрименение: Для файлов с повторяющимися паттернами, где требуется лучшее сжатие чем у простого LZ77.
# Создать архив с несколькими файлами
MariaARK.exe a documents.mark file1.txt file2.doc file3.pdf
# Просмотреть содержимое
MariaARK.exe l documents.mark
# Извлечь все файлы
MariaARK.exe x documents.mark C:\extracted
# Проверить целостность
MariaARK.exe t documents.mark# Создать архив с максимальным сжатием
MariaARK.exe a backup.mark C:\Documents\*.txt -mDEFL -l9
# Результат: максимально сжатый архив# Архивировать всю папку, исключая временные файлы
MariaARK.exe a project.mark C:\MyProject -r -x"*.tmp" -x"*.log" -x"*.bak" -mDEFL# Создать зашифрованный архив
MariaARK.exe a secret.mark sensitive.txt -p"мой_пароль" -mDEFL
# Извлечь (будет запрошен пароль)
MariaARK.exe x secret.mark# Создать архив с томами по 50 МБ
MariaARK.exe a large.mark C:\LargeFiles\*.* -v50M -mDEFL
# Результат: large.part1.mark, large.part2.mark, large.part3.mark, ...# Создать солидный архив для лучшего сжатия
MariaARK.exe a solid.mark *.txt -s -mDEFL -l9# Создать архив
MariaARK.exe a project.mark *.txt -mDEFL
# Изменить некоторые файлы...
# Обновить только измененные файлы
MariaARK.exe a project.mark *.txt -u -mDEFL
# С резервной копией
MariaARK.exe a project.mark *.txt -u -b -mDEFL# Удалить временные файлы
MariaARK.exe d archive.mark *.tmp
# Удалить конкретный файл
MariaARK.exe d archive.mark old_file.txt# Извлечь только .txt файлы
MariaARK.exe x archive.mark . *.txt
# Извлечь конкретные файлы
MariaARK.exe x archive.mark . file1.txt file2.txt# Полный пример со всеми опциями
MariaARK.exe a backup.mark C:\Data -r -mDEFL -l9 -s -p"пароль" -v100M -x"*.tmp" -b[Магическая сигнатура: "MARK" (4 байта)]
[Версия формата: UInt16 (2 байта, текущая версия 3)]
[Метаданные архива (версия 2+)]
- Длина комментария: UInt16
- Комментарий: UTF-8 строка
- Дата создания: Int64 (ticks)
- Версия создателя: UInt16 длины + UTF-8 строка
[Флаги (версия 3+): UInt16]
- Бит 0: Зашифрован
- Бит 1: Солидный архив
- Бит 2: Многотомный
[Информация о шифровании (если зашифрован)]
- Хеш пароля: 16 байт (первые 16 байт SHA256)
[Информация о томах (если многотомный)]
- Размер тома: Int64
- Номер текущего тома: UInt32
[Записи файлов]
Для каждого файла:
- Размер заголовка: UInt16
- Метод сжатия: 4 байта ASCII
- Размер оригинала: UInt64
- Размер сжатых данных: UInt64
- CRC32: UInt32
- Дата/время: Int64 (ticks)
- Атрибуты файла: UInt32
- Длина имени файла: UInt16
- Имя файла: UTF-8 строка
- Длина комментария: UInt16 (версия 3+)
- Комментарий: UTF-8 строка (версия 3+)
- Флаг пароля файла: Byte (версия 3+)
- Сжатые данные: переменной длины
[Маркер конца: 0x00 (1 байт)]
- Версия 1: Базовый формат
- Версия 2: Добавлены метаданные (комментарий, дата создания, версия)
- Версия 3: Добавлены шифрование, многотомность, солидные архивы, комментарии к файлам
- Реализация: .NET Framework
DeflateStream - Уровни сжатия: 1-9 (реализовано через размер буфера)
- Рекомендуется для большинства случаев
- Размер окна: 8KB
- Максимальная длина совпадения: 258 байт
- Хорошо работает с текстовыми файлами
- Размер окна: 4KB
- Максимальная длина совпадения: 18 байт
- Оптимизирован для небольших файлов
- Начальный размер словаря: 256 записей
- Максимальный размер словаря: 4096 записей
- Использует
ByteSequenceдля ключей словаря
- Алгоритм: AES-256
- Режим: CBC (Cipher Block Chaining)
- Заполнение: PKCS7
- Вывод ключа: PBKDF2 с 10000 итерациями
- Соль: 16 байт случайных данных (уникальна для каждого блока)
Используется для проверки целостности данных. CRC32 вычисляется для оригинальных (несжатых) данных и проверяется при извлечении.
Отображается для операций с файлами размером более 1MB:
- Процент выполнения
- Обработанный/общий размер в MB
- Скорость в MB/s
- Размер файла: Теоретически поддерживаются файлы до 2^64 байт, но рекомендуется не более 2GB из-за ограничений .NET Framework
- Длина имени файла: Максимум 4096 символов (для безопасности)
- Размер комментария: Максимум 65535 байт (64KB)
- Солидные архивы: Требуют распаковки всего блока для извлечения любого файла
- Многотомные архивы: При извлечении требуется наличие всех томов
[Укажите лицензию проекта]
[Информация о том, как внести вклад]
[Контактная информация или ссылки на issues]
- QUICKSTART.md - Быстрый старт с примерами
- AUDIT_REPORT.md - Отчет об аудите кода
Версия документации: 3.0
Последнее обновление: 2024