マニュアル: tar

投稿日: 更新日:

インストール

デフォルトでは以下のものがインストールされています。

  • Linux: GNU Tar
  • macOS: BSD Tar

LinuxでBSD Tarを使いたい場合(DockerでBSD Tarのテストとか)は、 以下のパッケージを入れます。コマンドは'bsdtar'です。

  • Debian GNU/Linux: libarchive-tools
  • CentOS 7: bsdtar

macOSでGNU Tarを使いたい場合は、brew install gnu-tarでインストールできます。 コマンドは'gtar'です。

出力ディレクトリを変更する方法

  • Tomcatのバージョン:
  • 展開先:
  • 展開先ディレクトリ:

以下のように--transformを使用する。

tar --transform=s/^apache-tomcat-{{ tomcat_version }}/{{ dest_dir }}/ -xvf apache-tomcat-{{ tomcat_version }}.tar.gz

Ansibleの場合は、unarchiveモジュールで以下のようにオプションを付ける。 (Tomcatを展開する場合を想定)

unarchive:
  src: apache-tomcat-{{ tomcat_version }}.tar.gz
  dest: {{ dest }}
  extra_opts: "--transform=s/^apache-tomcat-{{ tomcat_version }}/{{ dest_dir }}/"

owner/groupの変更

  • GNU tar
    • オーナーの変更: --owner=NAME
    • グループの変更: --group=NAME
    • オーナー・グループを数値(UID/GID)に変更: --numeric-owner

アーカイブからファイルを削除する方法

  • このオプションはGNU Tarのみ対応です。BSD Tar(macOSなど)では未対応です。
tar --delete -f archive.tar path/to/exclude

圧縮されたtarアーカイブはこの方法が使えない。 以下のエラーが出る。

tar: Cannot update compressed archives

この場合は、一旦圧縮を解除してからやるとよい。 以下のような方法もある。