Я только что испытал аналогичную проблему с неопределенными последовательными портами UART и Linux на ПК ARCHMI. dmesg | grep serial не показывал никаких результатов. После многих проб я заметил, что это проблема BIOS. После отключения опции «Быстрая загрузка» все работало гладко и последовательные порты были правильно загружены с помощью UART, dmesg показал результаты. На всякий случай помогает случайно.
Хорошо, объяснение, данное ddnomad, верное. Дело в метке времени.
Вот решение:
добавить - mtime = '1970-01-01 00:00:00'
в команду tar:
tar --mtime='1970-01-01 00:00:00' -Jcf archive.tar.xz *
Это заставит временную метку содержимого установить фиксированное значение в результате получаются идентичные архивы.
Каждый файл (папка также является файлом) имеет встроенную отметку времени.
Я полагаю, вы не можете создавать их для структур папок одновременно, поэтому отметки времени для этих файлов разные.
В результате архивирование или хеширование дадут вам разные результаты, поскольку отметка времени является частью файла, который используется в обеих операциях.
В этом разница между внешне идентичными файловыми структурами.
ОБНОВЛЕНИЕ: я полагаю, что при проверке одинакового содержимого вам нужно проверить содержимое этих файлов и сравнить их.
Существует ряд причин, по которым два архива одного и того же дерева каталогов могут различаться. Основными из них являются:
Метаданные, такие как право собственности, временные метки и т. Д., Могут отличаться. Чтобы получить воспроизводимый tar-архив, у вас должны быть те же права собственности, права доступа и временные метки. Убедитесь, что вы скопировали все метаданные (если у вас идентичное содержимое файла с разными метаданными, может помочь cp -a --attributes-only
). В GNU tar есть несколько опций, которые вы можете использовать для игнорирования определенных атрибутов:
- numeric-owner
хранит только числовые идентификаторы пользователей и групп, но не имена. - владелец
и - группа
принудительно записывают файлы под определенным пользователем и группой соответственно (например, - owner = 0 --group = 0
для записывать все файлы как принадлежащие корню). - set-mtime
позволяет сохранять все файлы с определенной меткой времени вместо реальной. Порядок, в котором хранятся файлы, может отличаться. Большинство файловых систем не дают никаких конкретных гарантий относительно порядка, в котором файлы перечислены в каталоге, и tar
перечисляет их по мере их поступления. (Вы можете увидеть порядок с помощью ls -U
.) В GNU tar 1.28 появилась новая опция - sort = name
. В более старых версиях или других реализациях вы можете получить воспроизводимый порядок файлов, построив отсортированный список имен файлов и передав его в tar:
find. -print0 | LC_ALL = C sort -z | tar --no-recursion -Jcf ../archive.tar.xz -T -
Возможно, вас заинтересует вики-страница Debian о воспроизводимых сборках .