ZIP-файлы без метаданных - PullRequest
0 голосов
/ 14 июня 2019

Я хотел бы найти простой способ архивировать группу файлов без метаданных (например, меток времени).Кажется, команда zip всегда сохраняет метаданные.Я не вижу способа отключить метаданные.

Я бы хотел, чтобы решение было командой или, самое большее, скриптом python.Спасибо.

1 Ответ

0 голосов
/ 14 июня 2019

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

Можно задать временную метку для конкретного значения, создав объект ZipInfo и изменив метку времени.

Вот подтверждение концепции

import zipfile

file = zipfile.ZipFile("test.zip", "w")
name = "/tmp/testfile.txt"
zi = zipfile.ZipInfo.from_file(name)
zi.date_time = (1980,1,1,0,0,0)

with file.open(zi, mode='w') as member:
    with open(name, mode='rb') as file:
        fileContent = file.read()
        member.write(fileContent)

Приведенный выше код создает test.zip с меткой времени поля, встроенной до 1 января 1980 года.

$ unzip -l test.zip
Archive:  test.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
      307  1980-01-01 00:00   tmp/testfile.txt
---------                     -------
      307                     1 file
...