パックするディレクトリにtarファイルを作成しないでください。
tar -czf /tmp/workspace.tar.gz .
解凍時に現在のディレクトリ全体にファイルを抽出することを除いて、トリックを実行します。行う方が良い:
cd ..
tar -czf workspace.tar.gz workspace
または、自分がいたディレクトリの名前がわからない場合:
base=$(basename $PWD)
cd ..
tar -czf $base.tar.gz $base
(これは、あなたが現在の場所に到達するためにシンボリックリンクをたどっていなかったこと、そしてシェルがシンボリックリンクを後方にジャンプしてあなたを二度と推測しようとしないことを前提としています-bash
この点で信頼できません。それについて心配する必要がある場合は、cd -P ..
ディレクトリを物理的に変更するために使用します。これが私の見解ではデフォルトの動作ではないことは愚かです。少なくとも、cd ..
他の意味を持たなかった人にとっては混乱します。)
議論の1つのコメントは言う:
私は[...]トップディレクトリを除外する必要があり、[...] tarをベースディレクトリに配置する必要があります。
コメントの最初の部分はあまり意味がありません-tarファイルに現在のディレクトリが含まれている場合、定義上、現在のディレクトリはすでに存在するため、そのアーカイブからファイルを抽出するときに作成されません(非常に奇妙な状況を除く) )。
コメントの2番目の部分は、次の2つの方法のいずれかで処理できます。
- いずれか:ファイルを別の場所に作成し(
/tmp
可能な場所の1つです)、完了後に元の場所に戻します。
- または:GNU Tarを使用している
--exclude=workspace.tar.gz
場合は、オプションを使用します。後の文字列=
はパターンです-例は最も単純なパターンです-完全一致。--exclude=./workspace.tar.gz
推奨事項に反して、現在のディレクトリで作業しているかどうかを指定する必要がある場合があります。--exclude=workspace/workspace.tar.gz
提案されているように、1つのレベルで作業しているかどうかを指定する必要がある場合があります。除外するtarファイルが複数ある場合は、のように ' *
'を使用し--exclude=./*.gz
ます。