😄

[Linux]: Linuxのファイル圧縮やアーカイブコマンド「zip」と「gzip」と「tar」のメモ

に公開

Linuxのファイル圧縮やアーカイブコマンド「zip」と「gzip」と「tar」のメモ

圧縮の時によく使用するLinuxコマンドの「zip」と「gzip」と「tar」について調べたときのメモ

使う頻度が高そうなのしか書いてないので注意です。

zip

zipフォーマットとは

  • 1989年にフィル・カッツ氏が考案した圧縮フォーマット
  • WindowsやMacOSなど様々OSで使用でき、普及率が高い
  • 圧縮率はそこまで高くないらしい
  • MIMEはapplication/zip
  • サイズの大きいファイルを圧縮したい場合は7z(7zip)コマンドを使用
# 基本
zip archive.zip ディレクトリ

コメント

  • -cは各ファイルにコメント
  • -zはアーカイブ全体に対してコメント
zip -c archive.zip ディレクトリ
zip -z archive.zip ディレクトリ

圧縮レベル指定

-0から-9まである

  • 0は圧縮しない
  • 1は最速
  • 9は最高圧縮レベル
zip -1 archive.zip ディレクトリ

パスワード

zip -e archive.zip ディレクトリ

現在のディレクトリ・サブディレクトリを再帰的に圧縮

zip archive.zip -r .

特定のファイルを除外

zip -r archive.zip . -x "*.tmp" "*.log" ".git/*"

findからファイルを探し、検索結果のファイルを圧縮

-@は標準入力からファイル名のリストを読み取るオプション

find . -type f | zip -@ archive.zip

tar

  • 今さらながら知ったが、圧縮ではなく複数のフォルダ・ファイルをまとめるアーカイブ機能を有するコマンド
  • 現在はオプションから圧縮形式を指定できる
  • 主にUnix(Linux)で使用されることが多く、パーミッションなどを保持してくれる
オプション 圧縮形式
Z compress
z gzip
j bzip2
J xz

圧縮したサイズはこんな感じでした

# テストファイル
 122K  15月 00 00:00 file_10.txt
 617K  15月 00 00:00 file_9.txt
1000K  15月 00 00:00 file_8.txt
 222K  15月 00 00:00 file_7.txt
 868K  15月 00 00:00 file_6.txt
 617K  15月 00 00:00 file_5.txt
  58K  15月 00 00:00 file_4.txt
 599K  15月 00 00:00 file_3.txt
 946K  15月 00 00:00 file_2.txt
 5.6K  15月 00 00:00 file_1.txt

# アーカイブファイル
 6.4K  15月 00 00:00 arch.tar.gz
 5.9K  15月 00 00:00 arch.tar.Z
 1.7K  15月 00 00:00 arch.tar.xz
 1.2K  15月 00 00:00 arch.tar.bz2

圧縮用のテストファイルの作成スクリプト(下記はClaudeが作りました😝)

# 10個のランダムサイズファイルを作成
for i in {1..10}; do dd if=/dev/zero of="file_$i.txt" bs=1024 count=$((RANDOM % 1000 + 1)) 2>/dev/null; done

アーカイブを作成する

  • c: アーカイブを作成する
  • v: 処理したファイルの一覧を表示
  • f: 指定したアーカイブを使用
# 単純なアーカイブファイル(tarballを作成
tar cvf arch.tar *.txt

# 圧縮形式を指定
tar cvf(z | Z | j | J) arch.tar.gz *.txt

アーカイブを展開

  • x: アーカイブからファイルを取得
tar xvf(z | Z | j | J) arch.tar.(gz | Z | bz2 | xz)

参考

最後に

何か間違っていることなどあれば、コメントに書いていただけると幸いです。
よろしくお願いいたします。

GitHubで編集を提案

Discussion