Допустим, у меня есть следующая структура каталогов где-то в моей файловой системе:
a/ dir; alice:work; default dir rights
b/ dir; alice:work; default dir rights
test.sh script; alice:work; executable
Затем я создаю архив с этой структурой каталогов как bob и перечисляю только test.sh как файл, который я хочу добавить в архив:
sudo tar cjf backup.tar.bz2 a/b/test.sh
Теперь у меня есть архив backup.tar.bz2, который должен был сохранить права владения и права на файл, который я указал в команде (и я также ожидаю того же для родительских каталогов a & b!).
Теперь вот мое затруднительное положение. Если я, все еще как bob, попытаюсь извлечь содержимое архива в другом месте моей файловой системы в качестве теста, я ожидаю получить ту же файловую структуру с теми же правами владения и правами, что и при создании архива с , Однако при использовании следующей команды
sudo tar xjf backup.tar.bz2
Вместо этого я получаю следующую структуру файлов:
a/ dir; root:root; default dir rights
b/ dir; root:root; default dir rights
test.sh script; alice:work; executable
Каким-то образом право собственности на родительские каталоги не сохраняется при извлечении из архива. Кажется, это дает право собственности на эти каталоги любому пользователю, извлекшему архив (в моем случае, root, поскольку я хочу сохранить права собственности и права).
Есть ли способ сказать tar, чтобы он оставался владельцем родительских каталогов? Я знаю, что это возможно, включив их в команду tar, которая создает архив:
sudo tar cjf backup.tar.bz2 a/ a/b/ a/b/test.sh
Но я бы предпочел этого не делать, если в a/ или a/ b/ есть другие файлы или каталоги, так как они также будут частью архива.