Я наблюдаю следующее поведение с tar 1.26 и 1.27.1:
$ mkdir a b a/diffowner
$ sudo mkdir b/diffowner
$ sudo chmod a+w b/diffowner
$ echo foo > a/diffowner/foo
$ tar -C a -cvf test.tar diffowner
diffowner/
diffowner/foo
$ tar -C b -xvf test.tar diffowner
diffowner/
diffowner/foo
tar: diffowner: Cannot utime: Operation not permitted
tar: diffowner: Cannot change mode to rwxr-xr-x: Operation not permitted
tar: Exiting with failure status due to previous errors
Поэтому я пытаюсь извлечь tar-файл из существующей структуры каталогов, где я не являюсь владельцем всех задействованных каталогов, но у меня есть разрешение на запись для всех из них. На самом деле они разделены между группой.
Меня не волнуют временные метки, и я верю, что разрешения уже должны быть правильными. Я запускаю это как обычный пользователь, поэтому он не должен пытаться --preserve-permissions
если не сказано, что я не сделал. Что действительно беспокоит меня, так это состояние выхода: я собираюсь использовать это в сценарии и хочу знать, сработало ли фактическое извлечение.
Есть ли опция для tar, которая говорит, что она не должна устанавливать права доступа к каталогу, ни немедленно, ни с задержкой? В противном случае, какие другие решения вы бы предложили. Прямо сейчас я думаю о распаковке во временный каталог и использовании rsync
для перемещения материала в существующее дерево. Но, возможно, вы знаете менее хакерский подход.