我有一个tar.gz文件,该文件是使用以下命令创建的:
.master("local")
因此,文件的权限和所有者应保存在此处。
如果我直接在终端中(根目录下)调用un-tar命令行,则文件的权限和所有者都可以:
tar -czvpf file.tar.gz my_directory
^这会在未归档的文件夹结构中产生正确的结果。
我还有一个Gradle任务,应该将其解压缩到目标文件夹:
tar --same-owner -xvf file.tar -C /target/directory
问题是:当我从同一终端调用gradle任务时:
task unTarPredefinedProjectTree(type:Exec) {
workingDir envDumpDir
commandLine ('tar --same-owner -xvf file.tar.gz -C /target/directory')
}
所有文件的所有者都重置为root。
我尝试单独放置命令行参数:
gradle unTarPredefinedProjectTree
并尝试使用tarTree函数:
commandLine ('tar', '--same-owner', '-xvf', 'file.tar.gz', '-C', '/target/directory')
仍然相同:使用Gradle任务后为“ root”所有者,但在终端中手动调用命令后更正所有者。在两种情况下,同一终端的窗口和我都位于root用户的控制之下。
那么如何强制Gradle保留tar文件的所有者?
先谢谢了。