tar コマンド 2014/10/16
複数のファイルを1つのアーカイブファイルにまとめたり、逆に展開したりするコマンド。オプション -z
を使えば、gzip での圧縮または解凍も同時に行う。
tarでのアーカイブファイルの拡張子にはよく .tar
が使われる。
-z
オプションを付けてgzipでの圧縮も行う場合は .tar.gz
や .tgz
が使われる。
基本操作 2015/04/25
## アーカイブ
$ tar cvf tarファイル名 アーカイブ対象ディレクトリ
## 圧縮してアーカイブ
$ tar cvzf tgzファイル名 圧縮対象ディレクトリ
## 展開
$ tar xvf tarファイル名
## 解凍して展開
$ tar xvzf tgzファイル名
## 特定のファイルのみ解凍して展開
$ tar xvzf tgzファイル名 ファイルパス
## アーカイブされているファイルの一覧
$ tar tf tarファイル名
## 圧縮してアーカイブされているファイルの一覧
$ tar tzf tgzファイル名
オプション 2016/04/06
-c
- 新しくアーカイブファイルを作成する。たぶんcreateの意味
-f
- アーカイブファイル名をパラメータで指定する。これを指定しないと標準入力 または標準出力が使われる
-t
- アーカイブファイルに含まれるファイルの一覧を表示する。たぶんlistの意味
-v
- 処理の進行しているファイル名を表示する。
-t
と併用の場合はタイムスタンプやファイルサイズなども表示する。 -x
- アーカイブファイルを展開する。たぶんextractの意味
-z
- gzipで圧縮または展開を同時に行う
-z
を使う場合は、アーカイブファイルの拡張子として .tar.gz
または .tgz
がよく使われる。
オプションは先頭のハイフンをとって全部スペースなしでつなげてしまうことができるようで、そのほうがタイプ数が少なくて済むので、普通はそうする。ただし f
はアーカイブファイル名の直前である必要があるので、結果的にオプション群の最後に書くことになる。
## 以下の2つは同じ結果になる
$ tar tzf foo.tar.gz
$ tar -t -z -f foo.tar.gz
HOWTO
アーカイブファイルの中のファイル一覧を見るには 2015/12/02
ファイル名のみを一覧で表示させるには
$ tar tf archive.tar.gz
パーミッション、ファイルオーナー、グループ、ファイルサイズ、タイムスタンプも表示するには
$ tar tvf archive.tar.gz
リモートにtarでバックアップ、またはリモートからローカルにtarでバックアップ 2013/08/23
-> サーバにある大量のファイルを tar しながら、ローカルにダウンロードするには
-> ローカルにある大量のファイルを tar しながら、リモートにアップロードするには
findの結果をバックアップ対象にするには 2013/08/24
以下のようにする。
$ find .... -print0 | tar cvzf foo.tar.gz --null -T -
find
のオプション -print0
は該当ファイル名をNULL区切りで出力し、
tar
のオプション --null -T -
は標準入力からアーカイブ対象のファイル名をNULL区切りでパースして取得する。 -T -
の2つ目の -
は標準入力を意味し、ここにファイル名を書けば、そのファイルからアーカイブ対象のファイル名を取得することになる。
-print0
のハイフンは1つで、 --null
のハイフンは2つ。
--null
を -T -
のあとに置くと、tar: -: file name read contains nul character
というエラーが発生した。
find
とtar
の間にxargs
を使ってしまうと、アーカイブするファイル数が多い場合に
tar
が複数回起動されてしまい、すべてのファイルが含まれたアーカイブファイルを作れない。
tarファイルの中にある特定のファイルのみを解凍するには 2015/04/25
最後のパラメータに解凍したいファイル名を渡せばよい。
$ tar xzf logs.tar.gz var/log/httpd/access_log
拡張子 .tar.xz のファイルを解凍・展開するには 2015/05/13
z
の代わりに J
というオプションを使う。
$ tar xvJf linux-4.0.2.tar.xz