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』を除外してアーカイブを作成します。
archive_clean.sh
tar -czf project-clean.tar.gz \
--exclude='.git' \
--exclude='node_modules' \
~/project/
bash archive_clean.sh
日付付きのバックアップを作成します。
backup.sh
today=$(date +%Y%m%d)
tar -czf "backup_${today}.tar.gz" ~/project/
bash backup.sh
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 も参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。