アプリケーションをLinux用にパッケージ化したいのですが、Zip/tar.gz/7z/rarを使用してWindowsで圧縮を行います。
Windowsで圧縮を行うため、Linuxでパッケージを抽出すると、ファイルのアクセス許可がリセットされます。
問題は、tar.gzのみが実行可能なファイルを抽出できることであり、他の形式(Zip/7z/rar)では抽出できません(ファイルのアクセス許可は644にリセットされます)。
だから私の質問は、権限を755にリセットしながらZip/7z/rarを使用してファイルを圧縮する方法です。
私の知る限り、Zipとrarはアクセス許可を保存しませんが、7zもWindowsでは保存しないと思います。
したがって、これらの形式で圧縮している間は、実際に許可を「設定」することはできません。 Linuxターゲットにはtar
ベースのアーカイブを使用することをお勧めします。 Zipまたはrarがどうしても必要な場合は、解凍後にchmod
を呼び出すスクリプトの使用を検討してください。
Zipは* nix権限をサポートしていますが、Windowsにはそれらを任意に設定できるツールはありません。 Pythonスクリプト を記述して、それらを設定することは可能です。
Dockerを使用して、Windowsのアクセス許可を含むファイルを圧縮できます
docker run -it --rm -v c:/Users/john/some/where:/data Alpine
# within container do
apk add Zip && cd /data && Zip -r archive.Zip dir-to-be-zipped