Ant TAR 작업을 사용하고 파일 권한을 보존하려면 어떻게해야합니까?
-
19-09-2019 - |
문제
물론 그것은 그것을 사용하여 수행 할 수 있습니다 exec task
, 그러나 내 질문은 다음과 같습니다.
TAR 작업을 사용하여 수행 할 수 있습니까?
해결책
이 메모에 따라 기존 권한을 유지하는 방법이 없다고 생각합니다. 작업을 복사하십시오:
유닉스 노트 : 파일을 복사 할 때 파일 권한은 유지되지 않습니다. 대신 기본 Umask 권한으로 끝납니다. 이는 현재 Java Runtimes에서 파일 권한을 쿼리하거나 설정할 수있는 수단이 없기 때문에 발생합니다. 권한 보존 복사 기능이 필요한 경우 사용하십시오
<exec executable="cp" ... >
대신에.
그러나, 그 타르 작업 하나 이상을 취할 수 있습니다 tarfileset
집단. 그만큼 tarfileset
a로 정의 할 수 있습니다 filemode
및/또는 dirmode
속성 UNIX 권한을 지정합니다. 여러 포함 된 파일 만 해당 파일 만 포함하여 각각의 필수 권한 세트를 얻는 것을 지정하면 해당 세트의 파일이 해당 권한에 포함됩니다.
다른 팁
이 허가 부족으로 인해 개미 타 직무가 거의 쓸모가 없습니다. 운영 체제 타르를 실행 작업:
<exec executable="tar" output="/dev/null" os="Linux">
<arg value="--exclude-from=files_to_exclude.txt"/>
<arg value="-cvz"/>
<arg value="--file=${file.tar}"/>
<arg value="."/>
</exec>
사람에게 알려진 거의 모든 운영 체제를위한 GNU 타르 바이너리가 있습니다. 버전 제어 시스템에 그 중 하나를 넣고 운영 체제에 따라 사용하십시오. 예, 개미는 실행할 때마다 프로세스를 포크해야합니다.
Tarfileset을 사용하여 프로젝트에서 일했습니다. 누군가가 필요로하는 경우에 대한 예제는 다음과 같습니다.
<tar destfile="${dist}/${module.name}-${version}.tar">
<tarfileset dir="${package.dir}" filemode="550" includesfile="${home.dir}/includelist.txt">
<include name="*.sh"/>
</tarfileset>
</tar>
이 예에서는 포함 elist.txt가 TAR 파일에 포함 할 파일을 알려주는 데 사용됩니다. *.sh 확장자가있는 모든 파일은 사용자와 그룹에 대한 권한 (550)을 읽고 실행합니다.
이것이 누군가를 돕기를 바랍니다.