распаковать в корневой директории, сохраняя структуру файлов

Вопрос или проблема

Я хочу разархивировать весь контент zip-файла в корневой каталог моего сервера.

Однако каждый раз, когда я пытаюсь сделать это, создается папка с именем файла.

Zip-файл называется src.zip

Файл находится в корневом каталоге моего сайта.

Я использовал следующую команду

unzip src.zip

Это разархивирует его, но затем создает папку с именем src и помещает содержимое туда.

Я хочу, чтобы все содержимое было в корне сайта, а не в папке.

Zip-файлы не хранят абсолютные пути. Ниже приведен фрагмент из zip-спецификации, APPNOTE.TXT

   4.4.17.1 Имя файла с опциональным относительным путем.
   Хранимый путь НЕ ДОЛЖЕН содержать буквы
   диска или устройства, или начальную косую черту. Все косые черты
   ДОЛЖНЫ быть прямыми "/" в отличие от
   обратных черт '\', чтобы обеспечить совместимость с файловыми системами Amiga
   и UNIX и т.д. Если ввод поступал из стандартного
   ввода, поля имени файла нет.  

Чтобы извлечь zip-файл в конкретное место, используйте опцию -d. Это извлечет содержимое zip в указанную директорию.

Например:

unzip -d / src.zip

Ответ или решение

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

Подробные инструкции по разархивированию без создания дополнительной папки:

  1. Понимание ZIP-архивов: Согласно спецификации ZIP (документ APPNOTE.TXT), ZIP-файлы не содержат абсолютных путей, а используют относительные. Это означает, что структура извлекаемых файлов по умолчанию зависит от исходной структуры во время их архивирования.

  2. Использование команды unzip:

    • Команда unzip src.zip сама по себе может создать папку, основанную на имени ZIP-файла, если архив был изначально создан именно так.
  3. Правильное использование флага -d:

    • Используйте команду unzip -d / src.zip для извлечения содержимого непосредственно в корневую директорию сервера. Опция -d / указывает командному интерпретатору на извлечение содержимого непосредственно в заданную директорию, в данном случае на корень.
    • Следует проявить осторожность при извлечении файлов в корень, так как это может перезаписать существующие файлы с теми же именами и сыграть роль в вопросах безопасности.

Доказательство концепции:

  • Проверка содержимого архива:
    Перед извлечением стоит проверить содержимое архива, чтобы убедиться, что его структура не содержит нежелательных путей. Для этого используйте команду:

    unzip -l src.zip

    Эта команда показывает список файлов и их путь в архиве.

  • Внимание к деталям:

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

Настоятельно рекомендуется использовать командную строку внимательно, так как неправильное выполнение команд может привести к непредвиденным последствиям на сервере.Инструкция позволяет не только решить поставленную задачу, но и гарантирует, что разархивация будет выполнена корректно и без лишних проблем.

Оцените материал
Добавить комментарий

Капча загружается...