LINUX.ORG.RU

Различия в результатах выполнения одной команды 7z на разных платформах

 ,


0

1

Навеяно этой темой. Примерно тем же самым интересуюсь, но в меньших масшатабах. В первую очередь хочу спросить у автора и тех, кто имеет опыт использования 7z на онтопике и оффтопике. Накостылен скрипт на питоне (для универсальности), который дергает 7z. В нем функции:

def make_diff_arch(full_arch_path, diff_arch_path, src_path, pwd):
    subprocess.run(['7z', 'u', full_arch_path, src_path,
                    '-ms=off', '-mhe=on', '-mx=0', '-t7z', '-p{}'.format(pwd),
                    '-u-', '-up0q3r2x2y2z0w2!{}'.format(diff_arch_path)])
Для платформ различаются только пути до каталога-источника. Как видно, сжатие я вообще не использую. Мне не понятно, почему выполнение на одном и том же архиве, на одном и том же каталоге-источнике, на оффтопике создает дифферентный архив 7M, а на онтопике 59М. Сравнивая их в распакованном виде я наблюдаю под онтопиком большое количество файлов, которые НЕ изменились по сравнению с каталогом-источником, то бишь как там были, так и лежат. Под оффтопиком все создается правильно. Выполнение команд вручную без скрипта приводит к тем же результатам. Вывод команд одинаковый. Подробного режима вроде как нет, так что узнать, что там происходит не так, затруднительно.
А вопрос простой, как обеспечить одинаковый результат работы команд? Чтобы не было лишнего при формировании дифферентного архива на линуксе.

P.S. Я не разработчик. Питон использую только для решения прикладных задач и не озабочиваюсь исключительной правильностью и PEPосовместимостью.



Последнее исправление: pawsonfire (всего исправлений: 1)

Ответ на: комментарий от Deleted

Тут

-up0q3r2x2y2z0w2
используется только время создания файла. Исходники 7z не смотрел, да и вряд ли пойму, если посмотрю, но atime у файлов в каталоге-источнике один и тот же. Сам каталог находится на ntfs разделе для обеих систем.

pawsonfire
() автор топика
Ответ на: комментарий от pawsonfire

находится на ntfs разделе для обеих систем

То есть в итоге ты сравниваешь не 7z, а драйвера к ntfs в разных системах.

Deleted
()
Ответ на: комментарий от Deleted

То есть в системах разные атрибуты файлов? В том числе времени доступа к одному и тому же файлу?

pawsonfire
() автор топика
Ответ на: комментарий от Deleted

В качестве теста создал под линуксом на ntfs разделе файл и заполнил его информацией:

  File: test.txt
  Size: 4         	Blocks: 1          IO Block: 4096   regular file
Device: 821h/2081d	Inode: 51248       Links: 1
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-09-09 20:06:15.571342400 +0300
Modify: 2018-09-09 20:06:12.211308800 +0300
Change: 2018-09-09 20:06:12.211308800 +0300
 Birth: -
С шиндовса файл виден так: https://i.imgur.com/LJCil9y.png
atime и mtime совпадают.
Или я неправильно понял, что ты имел ввиду?

pawsonfire
() автор топика
Ответ на: комментарий от pawsonfire

А у «лишних» файлов время создания в архиве и на диске одинаковое?

Идея как-то ещё не «оформилась». суть в том, чтобы сравнить дату создания (правильно?) файла из оффтопика, онтопика, в архиве. Файл нужно выбрать из

файлов, которые НЕ изменились по сравнению с каталогом-источником

Интуиция вопит «кто-то жульничает» подсказывает, что где-то теряется точность.

anymouze ★★
()
Ответ на: комментарий от system-root

Вообще-то _линукс_ умеет, уже больше года наверно, если не двух. Вопросы к софту, который не умеет.

anonymous
()
Ответ на: комментарий от anonymous

Не «линукс умеет», а «появились ФС, которые умеют». Разницу видишь?

А по факту, кому оно нафиг нужно, это время создания файла? Обычно ctime за глаза хватает, если инод не модифицировался (а модифицируют его только тупые программы, которые при сохранении редактированного файла делают unlink старому и создают новый, в итоге насрав и на хардлинки; поубивал бы авторов такой дряни!)...

anonymous
()
Ответ на: комментарий от system-root

Был неправ

имелось ввиду дату создания

время создания файла

anymouze ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.