Linuxでファイルをまとめたり圧縮したりするときに使うのが tar と gzip です。バックアップやログの持ち出しで頻出なので、圧縮・解凍の実例をまとめます。
tarとgzipの役割
- tar: 複数のファイル/ディレクトリを 1つにまとめる(アーカイブ)。それ自体は圧縮しない。
- gzip: ファイルを 圧縮 する。
この2つを組み合わせた .tar.gz(tarでまとめてgzipで圧縮)が定番の形式です。
圧縮する(まとめて.tar.gzに)
tar czf backup.tar.gz /var/www/app
オプションの意味は、c=作成(create)、z=gzip圧縮、f=ファイル名指定。「czf の後にファイル名、その後に対象」と覚えます。
解凍する(.tar.gzを展開)
tar xzf backup.tar.gz
x=展開(extract)。展開先を指定するなら -C:
tar xzf backup.tar.gz -C /tmp/restore
中身を確認する(展開せずに)
tar tzf backup.tar.gz # t=リスト表示。中身の一覧だけ見る
よく使うパターン
# 日付つきでバックアップ
tar czf app_$(date +%Y%m%d).tar.gz /var/www/app
# 特定ディレクトリを除外して圧縮
tar czf backup.tar.gz --exclude='*.log' /var/www/app
# 進捗を見ながら(詳細表示)
tar czvf backup.tar.gz /var/www/app # v=verbose
gzip単体・その他の圧縮
gzip file.log # file.log.gz にする(元は消える)
gunzip file.log.gz # 解凍
より高圧縮な .tar.bz2(jオプション)や .tar.xz(Jオプション)もありますが、まずは .tar.gz を確実に扱えれば十分です。
まとめ
「まとめる=tar、圧縮=gzip、合わせて.tar.gz」。圧縮は tar czf、解凍は tar xzf、中身確認は tar tzf。この3つと -C(展開先)、--exclude(除外)を覚えれば、バックアップやファイル持ち出しで困りません。