Ant Tarタスクを使用してファイルアクセス許可を保持するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1517297

  •  19-09-2019
  •  | 
  •  

質問

もちろん、それを使用して実行できます exec task, 、しかし、私の質問は次のとおりです。

TARタスクを使用して実行することは可能ですか?

役に立ちましたか?

解決

既存の許可を保持する方法はないと思います。 タスクをコピーします:

UNIX注: ファイルがコピーされている場合、ファイル許可は保持されません。代わりに、デフォルトのUMaSk許可になります。これは、現在のJava Runtimesでファイル権限を照会または設定する手段がないことが原因です。許可を提供するコピー機能が必要な場合は、使用してください <exec executable="cp" ... > 代わりは。

しかし タールタスク 1つ以上を取ることができます tarfileset 要素。 tarfileset で定義できます filemode および/または dirmode UNIXアクセス許可を指定する属性。倍数を指定すると、必要な権限の各セットを取得するためにそれらのファイルのみを一致させる場合、そのセット内のファイルはそれらの権限に含まれます。

他のヒント

この許可の欠如は、Ant Tarタスクを私にとってほとんど役に立たないものにします。オペレーティングシステムのタールを実行せずに行う方法はありません エグゼクティブタスク:

    <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>

この例では、includeList.txtを使用して、TARファイルにどのファイルを含めるかを指示します。 *.sh拡張機能を備えたすべてのファイルには、ユーザーとグループの許可(550)を読み取り、実行します。

これが誰かを助けることを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top