Мне нужно определенным образом заархивировать некоторые файлы, чтобы получить тот же файл архива, если содержимое файлов одинаково. Это мне нужно для проверки на равенство архивных файлов позже.
однако tar содержит информацию о временной метке, и поэтому я получаю разные архивные файлы, даже если их содержимое одинаковое.
как я могу создать архив (с tar, zip или чем-то еще), который не содержит информацию о метках времени?
Примечание. Мне известно, что даже если два файла tar отличаются, я могу игнорировать их временные метки и сравнивать только их содержимое с такими инструментами, как tar --diff
или tarsum
. Однако мне не разрешается использовать какой-либо другой внешний инструмент для сравнения (из-за моей настройки); Я просто могу проверить два архивных файла на точное равенство.
Примечание. Мне известно, что я могу установить временную метку для всех файлов с заданным значением до архивирования файлов, поэтому их временные метки будут одинаковыми. Однако файлов много, и я не хочу этого делать. Я просто хочу заархивировать эти файлы без метки времени
пример:
$ mkdir copy1
$ touch copy1/file1
$ touch copy1/file2
$ sleep 60
$ mkdir copy2
$ touch copy2/file1
$ touch copy2/file2
$ ls -l copy1
total 0
-rw-r--r-- 1 david wheel 0 Oct 27 00:59 file1
-rw-r--r-- 1 david wheel 0 Oct 27 00:59 file2
$ ls -l copy2
total 0
-rw-r--r-- 1 david wheel 0 Oct 27 01:00 file1
-rw-r--r-- 1 david wheel 0 Oct 27 01:00 file2
# the content of those files is the same; they only differ by the their timestamp
$ (cd copy1; tar -cvf ../copy1.tar .)
$ (cd copy2; tar -cvf ../copy2.tar .)
$ tar -tvf copy1.tar
drwxr-xr-x 0 david wheel 0 Oct 27 00:59 ./
-rw-r--r-- 0 david wheel 0 Oct 27 00:59 ./file1
-rw-r--r-- 0 david wheel 0 Oct 27 00:59 ./file2
$ tar -tvf copy2.tar
drwxr-xr-x 0 david wheel 0 Oct 27 01:00 ./
-rw-r--r-- 0 david wheel 0 Oct 27 01:00 ./file1
-rw-r--r-- 0 david wheel 0 Oct 27 01:00 ./file2
$ diff copy1.tar copy2.tar
Binary files copy1.tar and copy2.tar differ
Я пробовал с zip -X
вместо tar
, но получаю тот же результат