Hitachi

JP1 Version 11 JP1/Advanced Shell 


8.4.34 tarコマンド(対象パス名をアーカイブに格納,およびアーカイブから抽出,表示する)

形式

【Windows限定】
tar {-c|-r|-t|-u|-x} [-b ブロック化係数] [-d] [-f アーカイブ] [-h] [-m] [-P]
    [-V] [-v] [-X除外リストファイル] [-z] [--cmdrc0] [--compatible=種別]
    [-C ディレクトリ] [-T ファイル] [対象パス名...]

tar {c|r|t|u|x}[b][d][f][h][m][P][V][v][X][z] [ブロック化係数] [アーカイブ]
    [除外リストファイル] [--cmdrc0] [--compatible=種別] [-C ディレクトリ]
    [-T ファイル] [対象パス名...]
【UNIX限定】
tar {-c|-r|-t|-u|-x} [-b ブロック化係数] [-d] [-f アーカイブ] [-h] [-m] [-P] [-p]
    [-V] [-v] [-X除外リストファイル] [-z] [--cmdrc0] [--compatible=種別]
    [-C ディレクトリ] [-T ファイル] [対象パス名...]

tar {c|r|t|u|x}[b][d][f][h][m][P][p][V][v][X][z] [ブロック化係数] [アーカイブ]
    [除外リストファイル] [--cmdrc0] [--compatible=種別] [-C ディレクトリ]
    [-T ファイル] [対象パス名...]

機能

対象パス名をアーカイブに格納,およびアーカイブから抽出,表示します。コマンドの動作は,1つの機能文字(crtu,またはx)とその他の機能修飾子を指定することで決定します。

このコマンドで作成するアーカイブはustar format形式です。

引数

機能文字オプション

-c

--create

新しいアーカイブを作成します。アーカイブの先頭から対象パス名を格納します。対象パス名がディレクトリの場合,ディレクトリ下も格納します。

-r

--append

指定したアーカイブの終端に対象パス名を追加格納します。

-t

--list

アーカイブに格納されているファイル名一覧を表示します。

-vオプションと共に指定した場合,次の詳細情報も表示されます。

パーミッション uid/gid ファイルサイズ 日時 ファイル名

-u

--update

対象パス名がアーカイブ内の同名ファイルより新しい,またはアーカイブに格納されていないファイルを追加格納します。

-x

--extract

--get

アーカイブから対象パス名を抽出します。対象パス名がディレクトリの場合,ディレクトリ下も抽出します。

ファイルの抽出では次のように動作します。

  • 既存のファイルが存在する場合は,既存のファイルを削除した上で新規作成します(既存のファイルのパーミッションは保持されません)。

    UNIXで-pオプションを指定していない場合,パーミッションはアーカイブに格納されているパーミッションとumaskによって決定され,実行者が一般ユーザーの場合setuidビット,setgidビット,スティッキービットは設定されません。

    すでにディレクトリが存在する場合,該当するディレクトリに抽出ファイルを復元します。

  • UNIXで実行者がスーパーユーザーの場合,ユーザー,グループを抽出して設定します。

  • Windowsは,パーミッション,ユーザー,グループは抽出して設定されません。

機能修飾子オプション

-bブロック化係数

--blocking-factor=ブロック化係数

ブロックサイズをブロック化係数*512バイトとします。

デフォルト値は20(ブロックサイズは20*512バイト)です。

ブロック化係数に指定できる範囲は1~63です。

-cオプションと共に指定した場合に有効となり,-t-xオプションと共に指定した場合は意味のない指定となります。

-r-uオプションと共に指定した場合は,アーカイブのサイズと指定したブロック化係数で決定されます。

複数指定は,最後に指定したブロック化係数が有効となります。

指定できる範囲外を指定した場合,20を仮定して動作します。

-d

アーカイブに格納する場合,スペシャルファイル,パイプファイルも対象とします。

このオプションはデフォルトで付加され,オプション有無による動作の違いはありません。

-f アーカイブ

--file=アーカイブ

アーカイブを指定します。指定できるアーカイブは通常ファイル,パイプファイル,シンボリックリンクファイルです。

このオプションを指定していない,または「-」(ハイフン)を指定した場合は,標準入出力を示します。

-r-uオプションの場合,標準入出力とパイプファイルの組み合わせは使用できません。

このオプションを複数指定した場合,最後に指定したアーカイブが有効となります。

-h

--dereference

シンボリックリンクをたどり,ファイルまたはディレクトリとして扱います。

-c-r-uオプションと共に指定した場合に有効となり,-t-xオプションと共に指定した場合は意味のない指定となります。

-m

--touch

ファイルの最終修正日時は抽出し設定しません。

-xオプションと共に指定した場合に有効となり,-c-r-u-tオプションと共に指定した場合は意味のない指定となります。

Windowsの場合は-mオプションの指定に関わらず,ディレクトリの最終修正日時は設定できません。

-P

--absolute-names

対象パス名のルートディレクトリを取り除きません。

-p

--same-permissions

--preserve-permissions

【UNIX限定】

パーミッションを抽出して設定します。-xオプションと共に指定した場合に有効となり,-c-r-u-tオプションと共に指定した場合は意味のない指定となります。

スーパーユーザーはデフォルトで動作します。

-V

アーカイブの詳細情報を表示する際,ファイルのタイプを示す英字も出力します。

このオプションはデフォルトで付加され,オプションの有無による動作の違いはありません。

-v

--verbose

詳細情報を出力します。

-z

--gzip

--gunzip

--ungzip

gzip形式のアーカイブを操作します。

-cオプションと共に指定した場合,新しいアーカイブをgzip形式で圧縮して作成します。

-xオプションと共に指定した場合,gzip形式で圧縮されたアーカイブから対象パス名を抽出します。

-tオプションと共に指定した場合,gzip形式で圧縮されたアーカイブに格納されているファイル名一覧を表示します。

gzip形式のアーカイブを操作するとき,tarコマンドはgzipコマンドを呼び出します。tarコマンドから呼び出すgzipコマンドに,gzipコマンドのオプションを渡したい場合は,環境変数GZIPgzipコマンドのオプションを設定してからtarコマンドを実行してください。環境変数GZIPの詳細については,「2.5 環境変数を設定する」を参照してください。

-zオプションは,-rオプション,または-uオプションと同時には指定できません。-rオプション,-uオプションと同時に指定した場合はエラー終了します。

-xオプション,または-tオプションと共に指定する場合に,アーカイブがgzip形式で圧縮されていないときは,抽出や表示ができません。

なお,--gzip--gunzip,および--ungzipオプションは,-zオプションのロングオプションという意味しかありません。例えば,-cオプションと--gunzipオプションを指定した場合も,新しいアーカイブをgzip形式で圧縮して作成します。

--cmdrc0

オプションの解析後にエラーが発生しても戻り値を必ず0とします。

--compatible=種別

種別には次の文字列を指定できます。

long-file-name

対象パス名をアーカイブに格納する場合,対象パス名長はディレクトリパス長155バイト,ファイル名100バイト,シンボリックリンクのリンク先のファイル名長100バイトのアーカイブ内のヘッダ領域の制限があります。

このオプションを使用した場合,制限を解除できます(対象パス名は3072バイトまで可能です。実際に作成できるパス名長は各OSの最大長に依存します)。

ただし,このオプションで作成したアーカイブは,ustar format形式のOS提供のtarコマンドと互換性はありません。

-c-r-uオプションと共に指定した場合に有効となり,-t-xオプションと共に指定した場合は無視されます。

-C ディレクトリ

--directory=ディレクトリ

指定したディレクトリに移動して動作します。

対象パス名,-Tオプション,-Cオプションを組み合わせた場合,-Cオプションのあとに指定した対象パスが対象となります。

-Cオプションを複数指定する場合,2個目以降の-Cオプションは以前に指定した-Cオプションによってカレントディレクトリが移動していることを考慮する必要があります。

-T ファイル

-L ファイル

-I ファイル

--files-from= ファイル

格納,抽出,表示する対象パス名の一覧を指定ファイルから読み込みます。1行に1つの対象パス名を正確に記載します。スペース,空行もパス名とみなされます。

このオプションで複数指定した場合,どの指定も有効となります。

また,短いオプション-T-L-Iオプションはどの指定も同じ動作となります。

-xまたは-tオプションと組み合わせた場合,対象パス名は,ワイルドカードの組み合わせで指定できます。

ワイルドカードで使用する文字そのものを指定するために,\でエスケープすることもでき,\の指定は\でエスケープする必要があります。

ワイルドカードとして使用できる文字を次に示します。

ワイルドカード

意味

?

任意の1文字に合致します。

*

0文字以上の文字列に合致します。

[…]

[ ]に囲まれた文字列のどれか1文字に合致します。[ ]に囲まれた文字列の先頭に!または^を付けた場合,[ ]に囲まれていない文字に合致します。-(ハイフン)で区切るとハイフンで区切られた,間にある任意の文字(その2文字も含む)に合致します。

ワイルドカード[ ]の記述例を次の表に示します。

記述例

意味

[!abc]

abcの3つを除く文字と合致します。

[0-9]

0から9までのどれかに合致します。

[a-z]

英小文字に合致します。

[A-Z]

英大文字に合致します。

[0-9a-zA-Z]

英数字に合致します。

-X ファイル

--exclude-from=ファイル

格納,抽出,表示を除外する対象パス名の一覧を指定ファイルから読み込みます。1行に1つの対象パス名を記載します。対象パスは部分的なディレクトリパスの記載でも除外する対象となります。

スペース,空行もパス名とみなされます。

このオプションで指定した除外するファイル一覧は,-T-L-I--files-fromオプションで指定したファイル一覧より優先されます。

対象パス名は,ワイルドカードの組み合わせで指定できます。ワイルドカードで使用する文字そのものを指定するために,\でエスケープすることもでき,\の指定は\でエスケープする必要があります。

ワイルドカードとして使用できる文字を次に示します。

ワイルドカード

意味

?

任意の1文字に合致します。

*

0文字以上の文字列に合致します。

[…]

[ ]に囲まれた文字列のどれか1文字に合致します。[ ]に囲まれた文字列の先頭に!または^を付けた場合,[ ]に囲まれていない文字に合致します。-(ハイフン)で区切るとハイフンで区切られた,間にある任意の文字(その2文字も含む)に合致します。

ワイルドカード[ ]の記述例を次に示します。

記述例

意味

[!abc]

abcの3つを除く文字と合致します。

[0-9]

0から9までのどれかに合致します。

[a-z]

英小文字に合致します。

[A-Z]

英大文字に合致します。

[0-9a-zA-Z]

英数字に合致します。

対象パス名

格納,抽出,表示するファイルまたはディレクトリのパス名を指定します。

格納時,対象パス名とアーカイブが同一である場合,格納されません。

対象パス名の長さの制限に関しては--compatible=long-file-nameオプションを参照してください。

-xまたは-tオプションと組み合わせた場合,対象パス名は,ワイルドカードの組み合わせで指定することが出来ます。

ワイルドカードで使用する文字そのものを指定するために,\でエスケープすることもでき,\の指定は\でエスケープする必要があります。

ワイルドカードとして使用できる文字を次に示します。

ワイルドカード

意味

?

任意の1文字に合致します。

*

0文字以上の文字列に合致します。

[…]

[ ]に囲まれた文字列のどれか1文字に合致します。[ ]に囲まれた文字列の先頭に!または^を付けた場合,[ ]に囲まれていない文字に合致します。-(ハイフン)で区切るとハイフンで区切られた,間にある任意の文字(その2文字も含む)に合致します。

ワイルドカード[ ]の記述例を次に示します。

記述例

意味

[!abc]

abcの3つを除く文字と合致します。

[0-9]

0から9までのどれかに合致します。

[a-z]

英小文字に合致します。

[A-Z]

英大文字に合致します。

[0-9a-zA-Z]

英数字に合致します。

格納,抽出する対象パス名のルートディレクトリの扱い

コマンドは,格納,抽出の操作をする際,対象パス名のルートディレクトリを取り除いて動作します。該当するルートディレクトリは次の表のとおりです。-Pオプションを使用することで,対象パス名のルートディレクトリは取り除かないで動作することができます。

また,環境変数ADSH_CMDTAR_ROOTPATHを指定した場合,コマンドのデフォルト動作を「対象パス名のルートディレクトリは取り除く」から「対象パス名のルートディレクトリは取り除かない」に変更できます。

表8‒19 格納,および抽出で取り除かれる対象パス名のルートディレクトリ

OS

説明

UNIX

対象パス名を格納,抽出する際,先頭部分の次のルートディレクトリを取り除きます。

/ ../

Windows

対象パス名を格納,抽出する際,先頭部分の次のルートディレクトリを取り除きます。

\ ..\ ドライブレター:\

ユーザー名,ユーザーID,グループ名,グループIDの扱い

アーカイブの作成,抽出,および表示でのユーザー,グループの扱いは次のとおりです。マルチプラットフォーム間でアーカイブを操作した場合,ユーザー,グループが異なることがあります。

アーカイブの状態

ユーザーID/名

グループID/名

アーカイブ作成時

UNIX

該当ファイルのユーザーIDユーザー名を格納。

Windows

ユーザーID0と,該当ファイルのユーザー名を格納。

UNIX

該当ファイルのグループIDグループ名を格納。

Windows

グループID0グループ名は設定しない。

アーカイブ抽出時

UNIX

・スーパーユーザー

抽出したユーザー名からユーザーIDを求めてファイルに設定する。求められない場合は抽出したユーザーIDを設定。

・一般ユーザー

実行ユーザーIDまたは実行ユーザー名で設定。

Windows

ログオンユーザー名。

UNIX

・スーパーユーザー

抽出したグループ名からグループIDを求めてファイルに設定する。求められない場合は抽出したグループIDを設定。

・一般ユーザー

実行ユーザー名に属するグループIDまたはグループ名で設定。

Windows

該当なし。

アーカイブ表示時

UNIX

抽出したユーザー名からユーザーIDを求めて表示する。求められない場合は,抽出したユーザーIDを表示。

Windows

抽出したユーザーIDを表示。

UNIX

抽出したグループ名からグループIDを求めて表示する。求められない場合は,抽出したグループIDを表示。

Windows

抽出したグループIDを表示。

一時ファイルディレクトリ

このコマンドは,一時ファイルを作成することがあります。一時ファイルディレクトリは次のとおりです。

Windowsの場合

共通アプリケーションフォルダ\HITACHI\JP1AS\misc

UNIXの場合

環境変数TMPDIRに定義されたディレクトリ

環境変数TMPDIRが定義されていないときは,/var/tmp

終了コード

終了コード

意味

0

正常終了。

1

エラー終了。2のケースを除く。

2

エラー終了。不正なオプションを指定。

注意事項

使用例

例1 アーカイブの作成
C:\TEMP>%ADSH_OSCMD_DIR%\tar cvf ar.tar ar
ar
ar/file1
ar/file2
例2 アーカイブの抽出
C:\TEMP>%ADSH_OSCMD_DIR%\tar xvf ar.tar ar
ar
ar\file1
ar\file2
例3 アーカイブの表示
C:\TEMP>%ADSH_OSCMD_DIR%\tar tvf ar.tar
drwx------ 1234/5678           0 Oct 30 15:52:24 2015 ar
-rw------- 1234/5678           0 Oct 30 15:52:24 2015 ar/file1
-rw------- 1234/5678           0 Oct 30 15:52:24 2015 ar/file2
例4 アーカイブの追加格納(-rオプション時)
C:\TEMP>%ADSH_OSCMD_DIR%\tar rvf ar.tar ar
tar: Reading archive to position at the end...done.
ar
ar/file1
ar/file2
例5 アーカイブの追加格納(-uオプション時)
C:\TEMP>%ADSH_OSCMD_DIR%\tar uvf ar.tar ar
tar: Reading archive to position at the end...done.
ar/file2

ar/file2ar.tarにすでに格納されていますが,格納するar/file2ar.tarのファイルより新しい時刻のため格納されます。

例6 クロスプラットフォームでの格納と抽出
Windowsで格納
C:\TEMP>%ADSH_OSCMD_DIR%\tar cvf reg.tar .\regfile
./regfile

UNIXで抽出
$ tar xvf reg.tar
./regfile
例7 アーカイブ先を標準入出力にする
$ tar cvf - regfile > reg.tar
regfile
$ cat reg.tar | ./tar tvf -
-rw------- 1234/5678           5 Feb 17 16:47:28 2015 regfile
例8 Windows固有のパス名で格納してUNIXで抽出する
Windowsで格納
C:\TEMP>%ADSH_OSCMD_DIR%\tar cvfP reg.tar G:\DIR\regfile
G:/DIR/regfile

UNIXで抽出
$ ./tar xvf reg.tar
G:/DIR/regfile

$ ls -lR ./G:
total 8
drwxrwxr-x  2 USER1  GROUP1  4096 Oct 30 15:59 DIR

./G:/DIR:
total 8
-rw-rw-r--  1 USER1  GROUP1  3 Oct 30 15:59 regfile

UNIXでの抽出は,G:もディレクトリとして抽出されます。

例9 スーパーユーザーで抽出
$ ./tar tvf reg.tar 
-rw-rw-r-- 1234/5678           3 Oct 30 15:59:00 2015 regfile 

スーパーユーザーで抽出 
# ./tar xvf reg.tar 
regfile 
# ls -al regfile 
-rw-rw-r--  1 USER1  GROUP1  3 Oct 30 15:59 regfile

スーパーユーザーで抽出した場合,ユーザー,グループも抽出し設定されます。

例10 異なるパス名のファイルを同一の親ディレクトリとして格納
DIR1/SUB1/file1
DIR2/SUB1/file2
が存在し, DIR1,DI2と同階層でtarコマンドを実行

$ tar -c -v -f ar.tar -C DIR1 SUB1 -C ../DIR2 SUB1
SUB1
SUB1/file1
SUB1
SUB1/file2
例11 gzip形式のアーカイブの作成
C:\TEMP>%ADSH_OSCMD_DIR%\tar cvzf ar.tar.gz ar
ar
ar/file1
ar/file2
例12 gzipコマンドのオプションを環境変数GZIPに指定して,gzip形式のアーカイブの作成
$ export GZIP="-9 -q"
$ /opt/jp1as/cmd/tar cvzf ar.tar.gz ar
ar
ar/file1
ar/file2
例13 gzip形式のアーカイブからディレクトリの抽出
C:\TEMP>%ADSH_OSCMD_DIR%\tar xvzf ar.tar.gz ar
ar
ar/file1
ar/file2
例14 gzip形式のアーカイブの表示
C:\TEMP>%ADSH_OSCMD_DIR%\tar tvzf ar.tar.gz
drwx------ 0/0                 0 Dec 09 19:44:24 2015 ar
-rw------- 0/0              2758 Dec 09 19:39:35 2015 ar/file1
-rw------- 0/0              5516 Dec 09 19:39:55 2015 ar/file2