我发现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
来将内容移至现有树中。但是,也许您知道一种不那么骇人听闻的方法。
1
想知道是否有一种方法可以在tar创建时而不是提取时执行此操作。
—
Roy Truelove