Zip-файл с абсолютными путями через командную строку

Zip-файл с абсолютными путями через командную строку

Есть ли способ заархивировать файл, включив в него абсолютные пути в Linux через командную строку?

У меня есть программа на Python, которая проверяет zip- и tar-файлы на наличие абсолютных путей, и я хотел бы создать zip-файл, чтобы проверить, работает ли эта функция.

Мне удалось успешно сделать это с помощью tar. Я также долго и широко гуглил ответ на этот вопрос и проверил документацию и руководство по zip, но так и не нашел четкого ответа.

решение1

$> zip file.zip $PWD/test.txt
adding: path/to/test.txt (deflated 5%)
$> unzip -l file.zip
Archive:  file.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       20  03-11-2019 21:32   path/to/test.txt
---------                     -------
       20                     1 file

Для этого также имеется переключатель:

$> zip -jj file.zip test.txt
adding: test.txt (deflated 5%)
$> unzip -l file.zip 
Archive:  file.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       20  03-11-2019 21:32   path/to/test.txt
---------                     -------
       20                     1 files

Это даст вам точно такой же результат, но если вы используете его в самом начале, /то вы на самом деле не сможете этого сделать, но вы можете указать это при распаковке с помощью -dпараметра.

Да! Это правка, мне пришло в голову, может быть, вы говорите о gz, xz, bzip2? Если так, вам нужно сначала заархивировать их, у них нет концепции файловой системы, как у tar. zip, rar, 7z, все они делают что-то подобное.

решение2

В формате файла ZIP пути к файлам всегда относительны, см., например,этот:

  file name: (Variable)

      The name of the file, with optional relative path.
      The path stored should not contain a drive or
      device letter, or a leading slash.  All slashes
      should be forward slashes '/' as opposed to
      backwards slashes '\' for compatibility with Amiga
      and Unix file systems etc.

Конечно, можно исправить ZIP-файл, принудительно добавив в него начальный слеш, но все обычные приложения обычно защищены от таких очевидных взломов(*).

(*) еще более раздражающий хак — файл почти бесконечной длины, состоящий из последовательных нулей, которые кодируются в горстке байтов. Распаковка этого часто выводит из строя ваш компьютер. Все утилиты обработки ZIP теперь это обнаружат.

Связанный контент