Helionix

Как сохранить папки и имена файлов при конвертации архива

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

При переводе ZIP в TAR, TGZ в ZIP или другого архива в новый контейнер важно сохранить не только байты документов, но и дерево каталогов. Потерянная корневая папка, искажённая кириллица или конфликт регистра могут сделать проект бесполезным, даже если каждый отдельный файл распаковывается.

Конвертер архивов Helionix показывает логические пути до создания результата. Это позволяет заметить опасные сегменты, дубликаты и неподдерживаемые имена заранее, а после операции сравнить исходное и итоговое дерево.

Из чего состоит безопасный путь

Внутри переносимого архива следует использовать относительный путь: project/docs/readme.txt, а не C:\Users\name\project и не /home/name/project. Корневая папка объединяет набор и не раскрывает локальную структуру компьютера. Разделители нормализуются в представление целевого формата, но логические уровни должны оставаться теми же.

Как выполнить конвертацию

  1. Проверьте исходный архив полностью, включая CRC.
  2. Просмотрите список относительных путей в интерфейсе.
  3. Выберите единую корневую папку, если её нет.
  4. Разрешите конфликты регистра, дубликаты и недопустимые символы.
  5. Запустите безопасную конвертацию архива.
  6. Сравните дерево, число файлов и хеши после распаковки.

Опасные абсолютные пути и переходы

Записи с начальным слешем, буквой диска или сегментом ../ могут указывать за пределы каталога распаковки. Их нельзя переносить буквально. Безопасная политика отклоняет такую запись либо оставляет только нормализованный относительный хвост и явно сообщает об изменении. Молчаливое сохранение создаёт риск перезаписи файлов на устройстве получателя.

Кириллица и Unicode

Современные варианты ZIP и TAR поддерживают Unicode, но старые ZIP могли записывать имена в локальной кодировке. Если вместо текста видны кракозябры, сначала выберите правильную кодировку источника. Простое сохранение испорченной строки в UTF-8 не восстановит буквы. Также учитывайте разные способы Unicode-нормализации: визуально одинаковые имена могут иметь разные последовательности кодовых точек.

Регистр букв

В Linux Photo.jpg и photo.jpg могут быть разными объектами, а Windows и macOS часто воспринимают их как один путь. При создании ZIP для такой системы конвертер должен показать коллизию и предложить переименование. Автоматически оставить последний файл означает незаметно потерять первый.

ПроблемаРискБезопасное решение
../secret.txtВыход из папкиОтклонить или нормализовать с отчётом
Два одинаковых путиПерезаписьПереименовать либо остановить
Разный регистрКоллизия на WindowsПроверить без учёта регистра
Неправильная кодировкаИскажённое имяИсправить декодирование источника

Длинные и зарезервированные имена

У ОС и программ есть разные ограничения длины пути и наборы зарезервированных имён. Объект, допустимый в TAR, может не извлечься штатным средством Windows. До упаковки проверьте слишком длинные компоненты, точки и пробелы в конце, управляющие символы и системные названия. Лучше безопасно переименовать один объект с журналом соответствий, чем получить архив, который невозможно распаковать.

Пустые папки и файлы нулевой длины

Пустая папка может быть обязательной частью приложения, а нулевой файл — маркером. Некоторые процессы строят дерево только по путям файлов и теряют пустые каталоги. Сравнение должно учитывать отдельные записи каталогов, объекты нулевого размера и конечные разделители.

Как подтвердить результат

Постройте отсортированный список нормализованных путей для обоих архивов. Сравните тип объекта, размер и SHA-256 содержимого обычных файлов. Отдельно проверьте пустые каталоги, Unicode и конфликты регистра. Хеш контейнеров сравнивать бессмысленно, поскольку служебные заголовки и порядок меняются.

Полезен ли журнал переименований

Если целевая система требует изменить символы или длину пути, сохраните таблицу исходных и новых имён. Она нужна для аудита, обратного сопоставления и поиска ссылок внутри проекта. Журнал не должен содержать абсолютные пути компьютера. После каждого переименования повторно проверяйте уникальность без учёта регистра, иначе исправление одного конфликта может создать другой.

Частые вопросы

Нужно ли сохранять полные пути компьютера?

Нет. Используйте только переносимые относительные пути внутри общей папки.

Можно ли автоматически заменить все недопустимые символы?

Можно, если отчёт показывает соответствия и исключает новые дубликаты. Для важных данных лучше подтвердить изменения.

Почему число папок отличается?

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

Конвертировать архив с сохранением структуры →