tar コマンドでカレントディレクトリ以外のディレクトリを指定してアーカイブしたい

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

こんにちは、ウチイダです。

tar コマンドでアーカイブをするとき、わざわざ対象のディレクトリまで移動するのが面倒な時ってあるじゃないですか。

例えば、Dockerfileでのビルドの際に何かを圧縮するときとか。

あるいは、make コマンドで処理を自動化している場面とか。

そんな時に、横着してディレクトリ移動せずにtar でのアーカイブを実行してしまうと、解凍したときのディレクトリ構造が面倒なことになってしまいます。

# piyo を起点にしてアーカイブしたいのに、カレントディレクトリの直下のディレクトリが含まれてしまう
$ tar zcfv archive.tar.gz ./tar_test/hoge/fuga/piyo
./tar_test/hoge/fuga/piyo/
./tar_test/hoge/fuga/piyo/hogefuga/
./tar_test/hoge/fuga/piyo/hogefuga/fugapiyo/
./tar_test/hoge/fuga/piyo/hogefuga/fugapiyo/text.txt

ディレクトリを指定しても、そのディレクトリに到達するところまで、アーカイブに含まれてしまうんですよね。

これを展開すると、tar_test を起点としてデータが展開されます。

cd で移動したくないときは、-C を使うとよいようです。

$ tar zcfv archive.tar.gz -C ./tar_test/hoge/fuga/ piyo
piyo/
piyo/hogefuga/
piyo/hogefuga/fugapiyo/
piyo/hogefuga/fugapiyo/text.txt

今度は、tar_test やその下のhogeなどが含まれず、piyoを起点としてアーカイブを作ることができました。

カレントディレクトリを変えずに、アーカイブファイルの起点を変更したいときはお試しください。

以上、あなたのお役に立てればうれしいです。

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。

コメントを残す

*