複数のファイルやディレクトリを1つのアーカイブファイルにまとめて格納したり、そのアーカイブファイルを展開したりする場合は「tar」コマンドを実施します。
「tar」形式の拡張子は(.tar)となります。
「tar」コマンドの使い方(Linux)
「tar」コマンドは以下のような複数のファイルを1つのアーカイブに格納します。
以下のファイル「test01.txt」、「test02.txt」、「test03.txt」をアーカイブファイル「test.tar」に格納します。
$ cd /tmp/test $ ls -l 合計 0 -rw-r--r-- 1 root root 0 11月 8 10:16 test01.txt -rw-r--r-- 1 root root 0 11月 8 10:16 test02.txt -rw-r--r-- 1 root root 0 11月 8 10:16 test03.txt
「tar」コマンドを実行し、ファイルを格納
以下では「tar」コマンドを実行した結果となります。
コマンドオプションは以下となります。
- 「c」オプション : アーカイブの作成を実行
- 「f」オプション : アーカイブファイル名を指定。その後に対象ファイルを選択
対象のファイルを「test.tar」に格納します。
$ tar cf test.tar test01.txt test02.txt test03.txt $ ls -l 合計 12 -rw-r--r-- 1 root root 10240 11月 8 10:19 test.tar -rw-r--r-- 1 root root 0 11月 8 10:16 test01.txt -rw-r--r-- 1 root root 0 11月 8 10:16 test02.txt -rw-r--r-- 1 root root 0 11月 8 10:16 test03.txt
「tar」コマンドを実行し、アーカイブファイル「test.tar」を展開
上記で作成した「test.tar」ファイルを別のディレクトリへ展開します。
対象アーカイブと展開先は以下のディレクトリとなります。
- 対象アーカイブ: /tmp/test/test.tar
- 展開先: /tmp/testdir/
まず、アーカイブ展開先のディレクトリへ移動します。
$ cd /tmp/testdir/
以下コマンドでアーカイブファイルを対象ディレクトリ(/tmp/testdir/)へ展開します。
$ tar xf ../test/test.tar
or
$ tar xf /tmp/test/test.tar
対象ディレクトリ(/tmp/testdir/)内へアーカイブファイルが展開されたことが確認できます。
$ pwd /tmp/testdir $ ls -l 合計 0 -rw-r--r-- 1 root root 0 11月 8 10:16 test01.txt -rw-r--r-- 1 root root 0 11月 8 10:16 test02.txt -rw-r--r-- 1 root root 0 11月 8 10:16 test03.txt
「tar」で格納したアーカイブファイルの圧縮・解凍
「tar」コマンドは、格納・展開意外にも、同時に同じアーカイブファイルで圧縮・解凍ができます。
それぞれの圧縮形式はオプションを付けることで圧縮解凍をすることができます。
- gzip形式 : 「z」オプション
- bzip2形式 : 「j」オプション
- xz形式 : 「J」オプション
また、基本ソフトウェアのソースコードなど配布される拡張子は多くの場合、「tar + gzip形式」(tar.gz)もしくは(.tgz)で格納・圧縮されています。
このようなファイルの圧縮と展開をそれぞれの形式別に以下でまとめます。
「gzip」形式
gzip形式は「z」オプションとなります。
「v」オプションは格納・展開時の情報となります。
「gzip」形式の格納・圧縮
$ tar zcvf test01.tar.gz test01.txt test02.txt test03.txt test01.txt test02.txt test03.txt $ $ ls -l 合計 4 -rw-r--r-- 1 root root 140 11月 8 10:40 test01.tar.gz
「gzip」形式の解凍・展開
$ pwd /tmp/testdir $ tar zxvf /tmp/test/test01.tar.gz test01.txt test02.txt test03.txt $ ls -l 合計 0 -rw-r--r-- 1 root root 0 11月 8 10:16 test01.txt -rw-r--r-- 1 root root 0 11月 8 10:16 test02.txt -rw-r--r-- 1 root root 0 11月 8 10:16 test03.txt
「bzip2」形式
bzip2形式は「j」オプションとなります。
「v」オプションは格納・展開時の情報となります。
「bzip2」形式の格納・圧縮
$ tar jcvf test01.tar.bz2 test01.txt test02.txt test03.txt test01.txt test02.txt test03.txt $ $ ls -l 合計 4 -rw-r--r-- 1 root root 141 11月 8 11:51 test01.tar.bz2
「bzip2」形式の解凍・展開
$ pwd /tmp/testdir $ tar jxvf /tmp/test/test01.tar.bz2 test01.txt test02.txt test03.txt $ ls -l 合計 0 -rw-r--r-- 1 root root 0 11月 8 10:16 test01.txt -rw-r--r-- 1 root root 0 11月 8 10:16 test02.txt -rw-r--r-- 1 root root 0 11月 8 10:16 test03.txt
「xz」形式
xz形式は「J」オプションとなります。
「v」オプションは格納・展開時の情報となります。
「xz」形式の格納・圧縮
$ tar Jcvf test01.tar.xz test01.txt test02.txt test03.txt test01.txt test02.txt test03.txt $ ls -l 合計 4 -rw-r--r-- 1 root root 192 11月 8 11:59 test01.tar.xz
「xz」形式の解凍・展開
$ pwd /tmp/testdir $ tar Jxvf /tmp/test/test01.tar.xz test01.txt test02.txt test03.txt $ ls -l 合計 0 -rw-r--r-- 1 root root 0 11月 8 10:16 test01.txt -rw-r--r-- 1 root root 0 11月 8 10:16 test02.txt -rw-r--r-- 1 root root 0 11月 8 10:16 test03.txt
「tar」コマンドオプション
「tar」コマンドのオプションは以下の通りとなります。
$ tar --help 使用法: tar [オプション...] [ファイル]... GNU 'tar' saves many files together into a single tape or disk archive, and can restore individual files from the archive. Examples: tar -cf archive.tar foo bar # Create archive.tar from files foo and bar. tar -tvf archive.tar # List all files in archive.tar verbosely. tar -xf archive.tar # Extract all files from archive.tar. ローカルファイル名選択: --add-file=FILE 指定された FILE をアーカイブに追加 (ダッシュ ' で始まるファイル名の場合に便利) -C, --directory=DIR ディレクトリ DIR へ移動 --exclude=PATTERN PATTERN に一致するファイルを除外 --exclude-backups バックアップを除外してファイルをロック --exclude-caches タグファイル自身を除く CACHEDIR.TAG を含むディレクトリの内容を除外 --exclude-caches-all CACHEDIR.TAG を含むディレクトリを除外 --exclude-caches-under CACHEDIR.TAG を含むディレクトリ以下の全てを除外 --exclude-ignore=FILE 各ディレクトリの除外パターンをFILE (存在する場合) から読み取り --exclude-ignore-recursive=FILE 各ディレクトリおよびそのサブディレクトリの除外パターンをFILE (存在する場合) から読み取り --exclude-tag=FILE FILE 自身を除く FILE を含むディレクトリの内容を除外 --exclude-tag-all=FILE FILE を含むディレクトリを除外 --exclude-tag-under=FILE FILE を含むディレクトリ以下の全てを除外 --exclude-vcs バージョン管理システムのディレクトリを除外 --exclude-vcs-ignores 除外パターンをVCS無視ファイルから読み取り --no-null 前の --null オプションの効果を無効化 --no-recursion ディレクトリを自動的に下っていかない --no-unquote 入力ファイルまたはメンバー名を引用終了しない --no-verbatim-files-from -T がファイル名をダッシュで始まるオプションとして処理 (標準) --null -T が null で終わる名前を読み込み; --verbatim-files-from を暗示 --recursion ディレクトリを順繰りに下っていく (default) -T, --files-from=FILE 抽出または作成する名前をファイル FILE から取得 --unquote 入力ファイルまたはメンバー名を引用終了する (標準) --verbatim-files-from -T reads file names verbatim (no escape or option handling) -X, --exclude-from=FILE FILE に列挙されたパターンを除外 ファイル名一致オプション (除外/包含の両パターンに作用): --anchored ファイル名の先頭とパターンが一致 --ignore-case 大文字小文字を無視 --no-anchored 任意の '/' 以降にパターンが一致 (標準で除外) --no-ignore-case 大文字小文字を考慮して一致 (標準) --no-wildcards 逐語的文字列一致 --no-wildcards-match-slash ワイルドカードが '/' に一致しない --wildcards use wildcards (default) --wildcards-match-slash ワイルドカードが '/' に一致 (標準で除外) 主操作モード: -A, --catenate, --concatenate アーカイブに tar ファイルを追加 -c, --create 新しいアーカイブを作成 -d, --diff, --compare アーカイブとファイルシステムとの違いを見付ける --delete アーカイブから削除 (磁気テープ上ではダメ!) -r, --append アーカイブの末尾にファイルを追加 -t, --list アーカイブの内容を一覧表示 --test-label アーカイブのボリュームラベルをテストして終了 -u, --update アーカイブ内にあるファイルより新しいファイルのみを追加 -x, --extract, --get アーカイブからファイルを抽出 操作オプションに対する付加機能: --check-device インクリメンタルアーカイブ作成時にデバイス番号をチェックする (標準) -g, --listed-incremental=FILE 新しい GNU 形式のインクリメンタルバックアップを処理 -G, --incremental 古い GNU 形式のインクリメンタルバックアップを処理 --hole-detection=TYPE 穴を検知する技術 --ignore-failed-read 読み込めないファイルにおいて非ゼロで終了しません --level=NUMBER 作られた listed-incremental アーカイブに対するダンプレベル -n, --seek アーカイブは検索可能 --no-check-device インクリメンタルアーカイブ作成時にデバイス番号をチェックしない --no-seek アーカイブは検索可能ではありません --occurrence[=NUMBER] アーカイブ中の各ファイルの NUMBER番目の存在のみ処理. このオプションはサブコマンド --delete, --diff, --extract または --list のうちの 1つと組み合わせて且つファイル一覧がコマンドラインか -T オプション経由のどちらかで指定された場合のみ有効. NUMBER は標準で 1. --sparse-version=MAJOR[.MINOR] まばら (sparse) 形式のバージョンを設定 (--sparse の意味を含む) -S, --sparse まばらに存在するファイルを効果的に処理 制御を上書き: -k, --keep-old-files 取り出す際に既存のファイルを置き換えず, エラーとして扱う --keep-directory-symlink 取り出す際にディレクトリへの既存シンボリックリンクを維持 --keep-newer-files アーカイブコピーより新しい既存ファイルを置き換えない --no-overwrite-dir 既存ディレクトリのメタデータを保存 --one-top-level[=DIR] loose fileを取り出せないようにするためにサブディレクトリを作成 --overwrite 取り出す際に既存ファイルを上書き --overwrite-dir 取り出す際に既存ディレクトリのメタデータを上書き (標準) --recursive-unlink ディレクトリを取り出す前に階層を空に --remove-files ファイルをアーカイブに加えた後で削除 --skip-old-files 取り出す際に既存のファイルを置き換えず, そのままスキップする -U, --unlink-first 各々のファイルを取り出して上書きする前に削除 -W, --verify アーカイブを書き出した後に検証 出力ストリームを選択 --ignore-command-error 子プロセスの終了コードを無視 --no-ignore-command-error 子プロセスの非ゼロ終了コードをエラーとして処理 -O, --to-stdout ファイルを取り出して標準出力に出力 --to-command=COMMAND ファイルを取り出して別のプログラムに出力 ファイル属性の処理 --atime-preserve[=METHOD] 最終アクセス時刻を, 読み込み後に復元する (METHOD='replace'; 標準) か最初に設定しない (METHOD='system') かのどちらかの方法でダンプファイル上で維持 --clamp-mtime ファイルが --mtime での指定より新しい場合に時刻設定するのみ --delay-directory-restore 抽出が終了するまで抽出されたディレクトリの最終更新時刻と属性の設定を遅らせる --group=NAME 加えたファイルのグループを NAME に変更 --group-map=FILE ファイル所有者 GID と名前をマップするのに FILE を使用 --mode=CHANGES 加えたファイルの (シンボリック) モードを CHANGES に変更 --mtime=DATE-OR-FILE DATE-OR-FILE から追加ファイルの mtime を設定 -m, --touch ファイルの更新時刻を取り出さない --no-delay-directory-restore --delay-directory-restore オプションの効果を取り消し --no-same-owner あなた自身のファイルとして取り出す (一般ユーザではデフォルト) --no-same-permissions アーカイブから属性を抽出する際にユーザの umask を適用 (一般ユーザでは標準) --numeric-owner ユーザ名/グループ名として常に数字を使う --owner=NAME 加えたファイルの所有者を NAME に変更 --owner-map=FILE ファイル所有者 UID と名前をマップするのに FILE を使用 -p, --preserve-permissions, --same-permissions ファイル属性についての情報を抽出 (superuser では標準) --same-owner アーカイブ内と同じ所有者のままでファイルを取り出してみる (スーパーユーザではデフォルト) -s, --preserve-order, --same-order メンバー引数はアーカイブ内のファイルと同じ順番で並んでいます --sort=順番 ディレクトリ並び替え順: なし (標準), 名前またはiノード 拡張ファイル属性の処理 --acls POSIX ACL 対応を有効に --no-acls POSIX ACL 対応を無効に --no-selinux SELinux コンテクスト対応を無効に --no-xattrs 拡張属性対応を無効に --selinux SELinux コンテクスト対応を有効に --xattrs 拡張属性対応を有効に --xattrs-exclude=MASK xattr キーに対する除外パターンを指定 --xattrs-include=MASK xattr キーに対する包含パターンを指定 デバイスの選択と切替: -f, --file=ARCHIVE アーカイブファイルまたはデバイス ARCHIVE を使用 --force-local アーカイブファイルはコロンを含んでいてもローカル -F, --info-script=NAME, --new-volume-script=NAME 各々のテープの最後でスクリプトを実行 (-M 必須) -L, --tape-length=NUMBER NUMBER x 1024 バイトを書き出した後でテープを変更 -M, --multi-volume マルチボリュームのアーカイブを作成/一覧/抽出 --rmt-command=COMMAND 指定された rmt COMMAND を rmt の代わりに使用 --rsh-command=COMMAND rsh の代わりに COMMAND を使用 --volno-file=FILE FILE 中のボリューム番号を使用/更新 デバイスブロッキング: -b, --blocking-factor=BLOCKS レコードあたり BLOCKS x 512 バイト -B, --read-full-records 読み出したように再ブロック (4.2BSD パイプ用) -i, --ignore-zeros アーカイブ中のゼロブロック (つまり EOF) を無視 --record-size=NUMBER レコードあたり NUMBER バイト. 512 の倍数 アーカイブ形式の選択 -H, --format=FORMAT 指定された形式のアーカイブを作成 FORMAT は次のうちの 1つ: gnu GNU tar 1.13.x 形式 oldgnu GNU tar 1.12 以前の形式 pax POSIX 1003.1-2001 (pax) 形式 posix pax と同じ ustar POSIX 1003.1-1988 (ustar) 形式 v7 古い V7 tar 形式 --old-archive, --portability --format=v7 と同じ --pax-option=keyword[[:]=value][,keyword[[:]=value]]... pax キーワードを制御 --posix --format=posix と同じ -V, --label=TEXT ボリューム名 TEXT のアーカイブを作成. 一覧/抽出時に TEXT をボリューム名に対する抽出パターンに使用 圧縮オプション: -a, --auto-compress 圧縮プログラムを決めるのにアーカイブ接尾辞を使用する -I, --use-compress-program=PROG PROG 経由でフィルタ (-d を受け付ける必要あり) -j, --bzip2 bzip2 経由でアーカイブをフィルタ -J, --xz xz 経由でアーカイブをフィルタ --lzip lzip 経由でアーカイブをフィルタ --lzma xz --format=lzma 経由でアーカイブをフィルタ --lzop lzop 経由でアーカイブをフィルタ --no-auto-compress 圧縮プログラムを決めるのにアーカイブ接尾辞を使用しない -z, --gzip, --gunzip, --ungzip gzip 経由でアーカイブをフィルタ -Z, --compress, --uncompress compress 経由でアーカイブをフィルタ ローカルファイル選択: --backup[=CONTROL] 削除前にバージョン管理を CONTROL にしてバックアップ -h, --dereference シンボリックリンクをたどる; それらが指すファイルをアーカイブしてダンプ --hard-dereference ハードリンクをたどる; それらが指すファイルをアーカイブしてダンプ -K, --starting-file=MEMBER-NAME アーカイブの読み取り時にメンバー MEMBER-NAME で開始 --newer-mtime=DATE データが変更された時だけ日付および時刻を比較 -N, --newer=DATE-OR-FILE, --after-date=DATE-OR-FILE DATE-OR-FILE よる新しいファイルのみを格納 --one-file-system アーカイブ作成時にローカルファイルシステムに限定 -P, --absolute-names ファイル名から先頭の '/' を取り除かない --suffix=STRING 削除前にバックアップ, 通常の接尾辞 (環境変数 SIMPLE_BACKUP_SUFFIX が未設定なら '~') を上書き ファイル名変換: --strip-components=NUMBER 抽出時にファイル名から先頭の NUMBER 個のコンポネントを除去 --transform=EXPRESSION, --xform=EXPRESSION ファイル名の変換に sed の置換 EXPRESSION を使用 情報: --checkpoint[=NUMBER] NUMBER (標準 10) 番目の記録ごとに進捗メッセージを表示 --checkpoint-action=ACTION 各検問で ACTION を実行 --full-time ファイルの時刻情報を完全形式で表示 --index-file=FILE 冗長出力を FILE に送信 -l, --check-links 全てのリンクがダンプされない場合メッセージを表示 --no-quote-chars=STRING STRING からの文字引用を無効に --quote-chars=STRING 更に STRING から文字を引用 --quoting-style=STYLE 名前引用形式を設定. 有効な STYLE 値は下記参照. -R, --block-number アーカイブ内のブロック数を各々メッセージ付きで表示 --show-defaults tar の既定値を表示 --show-omitted-dirs 一覧や抽出時に, 検索基準に一致しないディレクトリを各々一覧表示 --show-snapshot-field-ranges スナップショットファイルの領域の正当な範囲を表示 --show-transformed-names, --show-stored-names 変換後にファイル名またはアーカイブ名を表示 --totals[=SIGNAL] アーカイブの処理後に総バイト数を表示. 引数があれば - この SIGNAL が発せられる時に総バイト数を表示. 許可された SIGNAL は: SIGHUP, SIGQUIT, SIGINT, SIGUSR1 および SIGUSR2. SIG 接頭辞がない名前でも可 --utc ファイルの更新時刻を UTC で表示 -v, --verbose 処理されているファイルの一覧を冗長に表示 --warning=KEYWORD 警戒管制 -w, --interactive, --confirmation 全ての動作を確認 互換オプション: -o 作成時は --old-archive と同じ. 抽出時は --no-same-owner と同じ その他オプション: -?, --help このヘルプ一覧を表示 --restrict 潜在的に害になるオプションの使用を無効に --usage 短い使用法メッセージを表示 --version プログラムバージョンを表示 長いオプションに対する必須または任意の引数は対応する短いオプションに対しても必須または任意です. The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX. The version control may be set with --backup or VERSION_CONTROL, values are: none, off never make backups t, numbered make numbered backups nil, existing numbered if numbered backups exist, simple otherwise never, simple always make simple backups --quoting-style オプションに対する有効な引数: literal shell shell-always shell-escape shell-escape-always c c-maybe escape locale clocale 「この」tar の規定値: --format=gnu -f- -b20 --quoting-style=escape --rmt-command=/etc/rmt --rsh-command=/usr/bin/ssh
「tar」コマンドの使い方は以上となります。
エンジニアのオンライン学習
エンジニアにおすすめのオンライン教材比較 | |
ITエンジニアが自宅で学習ができるオンラインスクール比較 | |