Linux 在Gradle任务中取消归档后,保留tar文件中的文件所有者
我有一个tar.gz文件,它是用以下命令创建的:Linux 在Gradle任务中取消归档后,保留tar文件中的文件所有者,linux,gradle,tar,Linux,Gradle,Tar,我有一个tar.gz文件,它是用以下命令创建的: tar-czvpf file.tar.gz my_目录 所以文件的权限和所有者应该保存在那里 如果我直接在终端(根目录下)调用un tar命令行,文件的权限和所有者都可以: tar --same-owner -xvf file.tar -C /target/directory ^这将在未归档的文件夹结构中生成正确的结果 我还有一个Gradle任务,它应该将此文件解压缩到目标文件夹: task unTarPredefinedProjectTree
tar-czvpf file.tar.gz my_目录
所以文件的权限和所有者应该保存在那里
如果我直接在终端(根目录下)调用un tar命令行,文件的权限和所有者都可以:
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')
}
问题是:当我从同一终端调用gradle任务时:
gradle unTarPredefinedProjectTree
所有文件的所有者都将重置为root用户
我尝试分别放置命令行参数:
commandLine ('tar', '--same-owner', '-xvf', 'file.tar.gz', '-C', '/target/directory')
并尝试使用tarTree函数:
task unTarPredefinedProjectTree << {
copy {
from tarTree(file('file.tar.gz'))
into '/target/directory'
}
}
task unTarPredefinedProjectTree文件的原始用户是什么?哪个用户正在运行gradle
?在这两种情况下,我都在“root”用户下运行root:tar——同一所有者-xvf file.tar-C/target/directory
和root:gradle unTarPredefinedProjectTree
我试图复制,但没有运气,这对我来说没问题,即使gradle
保留了原始文件的所有者。