web-dev-qa-db-ja.com

Linux:Zipアーカイブを作成するときに最上位ディレクトリを指定する

通常のディレクトリ構造(src /、bin /、...)のプロジェクトがあります。

project-name/
|-- bin
|-- lib
|-- src
`-- Makefile

そして、次のディレクトリ構造でアーカイブを作成したいと思います。

project-name-version/
|-- bin
|-- lib
|-- src
`-- Makefile

これを行うためのきちんとした方法はありますか?それは、他の場所に一時ディレクトリproject-name/を作成し、その一時ディレクトリで最後に呼び出すZip -r ...内のファイルをコピーすることを回避しますか?

(私は基本的に、ある種のパスプレフィックスまたは相対パスオプションを探しています。)

17
leden

これはすでに発生しているかもしれませんが、すべてをコピーするのではなく、シンボリックリンクを使用してみませんか?

ln -s project-name project-name-version

次に、シンボリックリンクを介してZip -rを使用します(Zipはデフォルトでシンボリックリンクを逆参照します)?完了したら、シンボリックリンクをrmするだけです。おそらくそれは最も洗練された解決策ではありませんが、Zipを介して直接それを行う明確な方法がわかりません。

9
FatalError

これは答えよりもアドバイスです:use Git

プロジェクトに Git リポジトリを設定すると、全体が非常に簡単になります。

git archive HEAD --prefix=project-name-version/ \
    --format=Zip -o project-name-version.Zip
15
cYrus