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つの機能文字(c,r,t,u,または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コマンドのオプションを渡したい場合は,環境変数GZIPにgzipコマンドのオプションを設定してから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]
a,b,cの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]
a,b,cの3つを除く文字と合致します。
[0-9]
0から9までのどれかに合致します。
[a-z]
英小文字に合致します。
[A-Z]
英大文字に合致します。
[0-9a-zA-Z]
英数字に合致します。
- 対象パス名
-
格納,抽出,表示するファイルまたはディレクトリのパス名を指定します。
格納時,対象パス名とアーカイブが同一である場合,格納されません。
対象パス名の長さの制限に関しては--compatible=long-file-nameオプションを参照してください。
-xまたは-tオプションと組み合わせた場合,対象パス名は,ワイルドカードの組み合わせで指定することが出来ます。
ワイルドカードで使用する文字そのものを指定するために,\でエスケープすることもでき,\の指定は\でエスケープする必要があります。
ワイルドカードとして使用できる文字を次に示します。
ワイルドカード
意味
?
任意の1文字に合致します。
*
0文字以上の文字列に合致します。
[…]
[ ]に囲まれた文字列のどれか1文字に合致します。[ ]に囲まれた文字列の先頭に!または^を付けた場合,[ ]に囲まれていない文字に合致します。-(ハイフン)で区切るとハイフンで区切られた,間にある任意の文字(その2文字も含む)に合致します。
ワイルドカード[ ]の記述例を次に示します。
記述例
意味
[!abc]
a,b,cの3つを除く文字と合致します。
[0-9]
0から9までのどれかに合致します。
[a-z]
英小文字に合致します。
[A-Z]
英大文字に合致します。
[0-9a-zA-Z]
英数字に合致します。
格納,抽出する対象パス名のルートディレクトリの扱い
コマンドは,格納,抽出の操作をする際,対象パス名のルートディレクトリを取り除いて動作します。該当するルートディレクトリは次の表のとおりです。-Pオプションを使用することで,対象パス名のルートディレクトリは取り除かないで動作することができます。
また,環境変数ADSH_CMDTAR_ROOTPATHを指定した場合,コマンドのデフォルト動作を「対象パス名のルートディレクトリは取り除く」から「対象パス名のルートディレクトリは取り除かない」に変更できます。
OS |
説明 |
---|---|
UNIX |
対象パス名を格納,抽出する際,先頭部分の次のルートディレクトリを取り除きます。 / ../ |
Windows |
対象パス名を格納,抽出する際,先頭部分の次のルートディレクトリを取り除きます。 \ ..\ ドライブレター:\ |
-
環境変数ADSH_CMDTAR_ROOTPATH 指定なし
コマンドのデフォルト動作はルートディレクトリを取り除いて格納,抽出します。ルートディレクトリを取り除きたくない場合は-Pオプションを指定して実行します。
-
環境変数ADSH_CMDTAR_ROOTPATH 指定あり
ADSH_CMDTAR_ROOTPATH=absoluteを設定することで,コマンドのデフォルト動作はルートディレクトリを取り除かないで格納,抽出します。
ユーザー名,ユーザーID,グループ名,グループIDの扱い
アーカイブの作成,抽出,および表示でのユーザー,グループの扱いは次のとおりです。マルチプラットフォーム間でアーカイブを操作した場合,ユーザー,グループが異なることがあります。
アーカイブの状態 |
ユーザーID/名 |
グループID/名 |
---|---|---|
アーカイブ作成時 |
|
|
アーカイブ抽出時 |
|
|
アーカイブ表示時 |
|
|
一時ファイルディレクトリ
このコマンドは,一時ファイルを作成することがあります。一時ファイルディレクトリは次のとおりです。
- Windowsの場合
-
共通アプリケーションフォルダ\HITACHI\JP1AS\misc
- UNIXの場合
-
環境変数TMPDIRに定義されたディレクトリ
環境変数TMPDIRが定義されていないときは,/var/tmp
終了コード
終了コード |
意味 |
---|---|
0 |
正常終了。 |
1 |
エラー終了。2のケースを除く。 |
2 |
エラー終了。不正なオプションを指定。 |
注意事項
-
「-」なしショートオプションの形式で指定する場合,オプションとオペランドは「形式」で示した順で指定する必要があります。
-
シンボリックリンクの場合は最終修正日時・最終アクセス日時を保持しません。
-
対象パス名をアーカイブに格納している途中にtarコマンドを中断すると,次の名前の一時ファイルが残ることがあります。この場合は手動で一時ファイルを削除する必要があります。
- 【Windowsの場合】
-
tar.XXXXXX(XXXXXXは任意の6文字の文字列)
- 【UNIXの場合】
-
tarppppp.XXXXXXXX(pppppは5桁以上のプロセスID,XXXXXXXXは任意の8文字の文字列)
-
抽出で未知の種別のファイルを検出した場合,通常ファイルとして処理を試みます。
Windowsの場合,ブロックデバイスファイル,キャラクタデバイスファイル,パイプファイルの抽出は未知のファイル種別として判断されます。
(例)
C:\TEMP>%ADSH_OSCMD_DIR%\tar xvf PIPE.tar tar: PIPE/pp creating as regular file. PIPE/pp
-
アーカイブに同じ名前のパス名が複数存在する場合,最後のパス名でそれ以前のファイルを上書きします。
-
WindowsのUNCパスの格納,抽出はサポートしていません。
-
Windowsの場合,抽出するファイル名が大文字と小文字の違いだけのファイル名は同一ファイルとして扱われます。
-
Windowsの場合,ショートネーム指定は,ロングネームで格納,抽出および表示をします。ただし,シンボリックリンク先は指定されたファイル名で格納,抽出および表示をします。
-
Windowsの場合,ディレクトリ区切り文字を\で使用している場合,格納,抽出は「/」に変換統一されます。
-
Windowsの場合,ジャンクションは実ファイルとして処理されます。
-
Windowsの場合,シンボリックリンクの抽出はユーザーにシンボリックリンク作成の権限が必要です。
-
Windowsの場合,NTFS以外のファイルシステムにリンクファイルは抽出できません。
-
Windowsの場合,シンボリックリンク先が存在しない状態ではシンボリックリンクを抽出できません。
-
UNIXで\を含むファイルを格納し,Windowsで抽出をする場合,\はディレクトリ区切り文字として扱われます。
-
Windowsで格納し,UNIXで抽出する場合,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上でドライブレターはディレクトリとして作成されます。
-
-
UNIXの場合,スペシャルファイルの抽出は,スペシャルファイルの作成権限を持つユーザーで行ってください。
-
このコマンドは,このコマンド自身が作成したアーカイブの操作だけをサポートします。アーカイブの形式の違いによって,各OS提供のtarコマンドとJP1/ASのtarコマンド間でアーカイブの操作をした場合,正しく格納,抽出および表示できないことがあります。
-
格納時,抽出時,表示時でエンコーディングが異なる場合,ファイル名が正しく抽出,表示できない場合があります。
-
8GB以上のファイルをアーカイブに格納,抽出および表示はサポートしていません。
-
UNIXの場合,2097152以上のユーザーID,グループID,メジャー番号,マイナー番号はサポートしていません。
-
ユーザー名,グループ名が32文字以上のファイルはサポートしていません。
使用例
- 例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/file2はar.tarにすでに格納されていますが,格納するar/file2はar.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