Как заставить tar игнорировать время последнего изменения файлов/каталогов

Вы должны проверить, поддерживает ли ваш UEFI эту функцию. На моем ноутбуке (Lenovo z70) мне не удалось постоянно включить дискретный графический процессор nvidia. В любом случае, вы не должны использовать дискретную видеокарту, когда она не нужна: это приведет к большому энергопотреблению и большему нагреву. Вы должны активировать дискретную видеокарту только тогда, когда это действительно необходимо (используя optirun или primus), например, во время игр при работе с программным обеспечением, интенсивно использующим графику.

4
13.01.2016, 11:43
1 ответ

Похоже, вы ищете не только фиксированный mtime внутри TAR, но и бит -for -бит идентичный tarball, учитывая, что сами файлы идентичны. На самом деле это сложнее, чем кажется.

В зависимости от вашей ситуации не все пункты могут иметь значение, но я перечисляю их здесь для полноты картины. В GNU tar вы можете сделать следующее:

  • установите mtime с помощью --mtime=<date>. Начиная с версии 1.29 (в Debian 1.28 -1, вы можете использовать --clamp-mtime, чтобы установить реальное mtime файла только для файлов /новее/, чем заданное mtime. Это полезно, когда вы хотите дать сгенерированным файлам общую временную метку, но не трогать другие файлы.
  • Чтобы иметь предсказуемый порядок файлов в архиве, используйте--sort=name(GNU tar 1.28 или более позднюю ). Поведение по умолчанию — --sort=none, при котором файлы хранятся в порядке каталогов.
  • --owner=0 --group=0 --numeric-ownerдля установки владельца (, если вы создаете TAR от разных пользователей ).
  • разрешения могут отличаться из-за разных umask. Используйте chmodперед созданием архива или используйте --mode=<CHANGES>, чтобы изменить их, чтобы они были согласованными.

В инициативе Reproducible Builds есть хорошая статья о создании битовых -для -битовых идентичных архивов .

В статье также представлены некоторые обходные пути для старых версий tar, которые могут работать и с другими реализациями TAR. Обходной путь для mtime, в частности, заключается в том, что вы можете использовать touchперед созданием TAR, чтобы установить фиксированное значение mtime для всех файлов старше определенной даты. Для предсказуемого порядка внутри архива используйте findи sort, чтобы передать упорядоченный список файлов -в TAR.

find build -print0 | LC_ALL=C sort -z
  | tar --no-recursion --null -T - -cf product.tar

См. документацию GNU TAR и справочную страницу для получения информации об отдельных параметрах.

5
27.01.2020, 20:53

Теги

Похожие вопросы