😄
[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)
参考
最後に
何か間違っていることなどあれば、コメントに書いていただけると幸いです。
よろしくお願いいたします。
Discussion