У меня есть файл tar.gz, который создается с помощью команды:
tar -czvpf file.tar.gz my_directory
Таким образом, разрешения и владельцы файлов должны быть сохранены там.
Если я вызываю командную строку 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'
}
}
То же самое: владелец root после использования задачи Gradle, но исправьте владельцев после вызова команды вручную в терминале. Одинаковое окно терминала и я под пользователем root в обоих случаях.
Так как заставить Gradle сохранить владельцев tar-файла?
Заранее спасибо.