Сохранять владельцев файлов из tar-файла после архивации в задаче Gradle - PullRequest
0 голосов
/ 30 августа 2018

У меня есть файл 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-файла?

Заранее спасибо.

...