Skip to main content

archive and compress

compress

gzip

gzip filename
gunzip -lv filename.gz
gunzip filename.gz

gzip -c filename > filename.gz
gunzip -c filename.gz > filename

zless filename.gz

bzip2

bzip2 filename
bunzip2 filename.bz2

bzip2 -c filename > filename.bz2
bunzip2 -c filename.bz2 > filename

bzless filename.bz2

xz

xz filename
unxz filename.xz

xz -c filename > filename.xz
unxz -c filename.xz > filename

xzless filename.xz

Archive

tar

tar cf filename.tar filename.0
tar cf filename.tar dirname
tar tvf filename.tar
tar xv filename.tar [path/to/dir/targetfile]

zip

zip filename.zip filename
zip -r filename.zip dirname
unzip -lv filename.zip
unzip filename.zip [path/to/dir/targetfile]

7zip

7z a filename.7z filename
7z a -r filename.7z dirname
7z l filename.7z
7z x filename.7z [path/to/dir/targetfile]

tarとgzip

GNU版tarが使えない時のtar.gzファイルの圧縮

tar cf - file or dir ... | gzip -c > archive.tar.gz

同じく展開

gzip -cd archive.tar.gz | tar xf -

tar、gzipからbase64でエンコード。デコード・展開の確認

tar cf - file or dir ... | gzip -c | base64 - | base64 -i -d - | gzip -cd | tar tvf -
tar cf - file or dir ... | gzip -c | openssl enc -a | openssl enc -a -d | gzip -cd | tar tvf -

ログがローテートされてgzipで圧縮されると、いちいち展開して読むのがめんどくさい と思ってた。 以下のようなツールがあり、gzipで固められたテキストファイルをいちいち展開せずに処理することができる。超便利。

zcat zgrep zdiff zless

for bzip2

bzcat bzgrep bzdiff bzless

for xz

xzcat xzgrep xzdiff xzless

for zip

zipgrep

tar の圧縮オプション

  • Z: compress (Z)
  • z: gzip (gz)
  • j: bzip2 (bz2)
  • J: xz (xz)

zip

microsoft系osでもおなじみの形式

tarでアーカイブしてzip圧縮。展開の確認

tar cf - file or dir ... | zip - - | funzip | tar tvf -

無圧縮zipアーカイブ

zip -0r archive.zip dirname

暗号化

zip -e archive.zip filename

zipの標準的な暗号化方式は強度が弱い。また、アーカイブヘッダが暗号化されず、ファイル名等は隠匿できない。

  • 一定期間経てば保護する必要がなくなる内容を暗号化する用途であれば問題ない。
  • 見られても困らないファイル名になっているなら問題ない。

ならよいが、そうでなければ下記の対応が必要となる。

  • zipファイルを他のツール(gpg等)で暗号化する。
  • 他のアーカイブツール(7z等)を使う。

7z

zipよりも高い圧縮率をサポート。暗号化方式としてAES256をサポート。アーカイブヘッダの暗号化をサポート。 7zではファイルのuid/gidは保持しない。

(ubuntuのp7zipパッケージに含まれる7zrでは、暗号化できなかった。 p7zip-fullパッケージの7zを使うことで、暗号化することができた。)

7z形式で暗号化して圧縮(アーカイブヘッダも暗号化)。

7z a -t7z -p -mhe=on archive.7z dirname

lコマンドの-sltオプションで、暗号化されているか確認することができる。

7z l -slt archive.7z

ファイルの場合、悪意ある人の手に渡ったら、高性能の計算機で長時間パスワード解析されてしまう。 (キャッシュカードのPINコードのように、一定時間に一定回数失敗したら保護される、ということはない。) 内容が漏れたら困る暗号化ファイルには長いパスワードを使う。

圧縮音声など、さらなる圧縮を望まない場合、zipや7z等ではアーカイブのみで圧縮しないこともできる。

zip -0 ....
7z a -mx=0 ....