Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
tar
『tar』はファイルやディレクトリをまとめてアーカイブ(1つのファイルに束ねる)するコマンドです。gzip や bzip2 と組み合わせて圧縮もできます。Linux/macOS で最も広く使われるアーカイブツールです。
構文
# アーカイブを作成(gzip 圧縮) tar -czf アーカイブ名.tar.gz ファイルまたはディレクトリ # アーカイブを展開 tar -xzf アーカイブ名.tar.gz # アーカイブの内容を確認(展開せず) tar -tzf アーカイブ名.tar.gz # アーカイブを作成(bzip2 圧縮) tar -cjf アーカイブ名.tar.bz2 ファイルまたはディレクトリ # 指定ディレクトリに展開 tar -xzf アーカイブ名.tar.gz -C 展開先ディレクトリ
オプション一覧
| オプション | 概要 |
|---|---|
| -c | アーカイブを作成します(create)。 |
| -x | アーカイブを展開します(extract)。 |
| -t | アーカイブの内容一覧を表示します(list)。 |
| -z | gzip 圧縮・展開を行います(.tar.gz / .tgz)。 |
| -j | bzip2 圧縮・展開を行います(.tar.bz2)。 |
| -J | xz 圧縮・展開を行います(.tar.xz)。 |
| -f ファイル名 | アーカイブのファイル名を指定します(必須)。 |
| -v | 処理したファイルを詳細表示します(verbose)。 |
| -C ディレクトリ | 展開先ディレクトリを指定します。 |
| --exclude=パターン | 特定ファイルをアーカイブから除外します。 |
| -p | パーミッション(所有者・権限)を保持します。 |
| --strip-components=N | 展開時にパスの先頭 N 階層を削除します。 |
サンプルコード
以下のディレクトリ構造を例に説明します。
ディレクトリを gzip 圧縮してアーカイブを作成します。『-v』を付けると処理中のファイルが表示されます。
tar -czvf project.tar.gz ~/project/
~/project/ ~/project/src/ ~/project/src/index.php ~/project/src/css/ ~/project/src/css/style.css ~/project/docs/ ~/project/docs/README.md
アーカイブの内容を確認します(展開しない)。
tar -tzf project.tar.gz
~/project/ ~/project/src/ ~/project/src/index.php ~/project/src/css/ ~/project/src/css/style.css ~/project/docs/ ~/project/docs/README.md
アーカイブをカレントディレクトリに展開します。
tar -xzf project.tar.gz
指定ディレクトリに展開します。
tar -xzf project.tar.gz -C /tmp/restore/
『.git』と『node_modules』を除外してアーカイブを作成します。
tar -czf project-clean.tar.gz \
--exclude='.git' \
--exclude='node_modules' \
~/project/
日付付きのバックアップを作成します。
today=$(date +%Y%m%d)
tar -czf "backup_${today}.tar.gz" ~/project/
bzip2 圧縮でアーカイブを作成します(gzip より高圧縮率ですが、時間がかかります)。
tar -cjf project.tar.bz2 ~/project/
アーカイブの圧縮後のファイルサイズを確認します。
ls -lh project.tar.gz
-rw-r--r-- 1 user user 2.3M Mar 6 12:00 project.tar.gz
概要
オプションの覚え方は czf(Create + gZip + File)と xzf(eXtract + gZip + File)がよく使われます。-v を加えると処理中のファイルが表示されて進捗を確認できます。
バックアップスクリプトでは --exclude で不要なディレクトリ(.git・node_modules など)を除外するのが重要です。圧縮ファイルを扱う他のコマンドについては gzip / bzip2 / zip も参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。