Open4

圧縮 & 解凍コマンド まとめ

kabeckabec

タイムスタンプの生成テンプレート

圧縮ファイルの接頭によくつけるので記載しておく。

$(date +"%Y%m%d%H%M%S")

[西暦][月(0埋め)][日(0埋め)][時(0埋め)][分(0埋め)][秒(0埋め)]で出力される。
例えば、2023年8月31日9時15分30秒に実行した場合は20230831091530が出力される。

各オプション間で文字列を挿入することは可能なので、上記表示が見辛ければ適当な箇所で_などで区切りを入れると良い。

$(date +"%Y%m%d_%H%M%S")

全てのオプションを使用する必要はないので例えば秒数まで必要なければ最後の%Sを抜けばよい。

$(date +"%Y%m%d%H%M")
kabeckabec

zip

ディレクトリの圧縮

 zip compressed -r target_dir
  • compressed: 圧縮後のファイル名(末尾の.zipは不要)
  • target_dir: 圧縮対象のディレクトリパス(末尾の/は不要)

解凍

unzip target_zip
  • target_zip: 対象のzipファイルパス
kabeckabec

7z

ディレクトリの圧縮

7z a compressed.7z target_dir
  • compressed.7z: 圧縮後のファイル名(末尾の.7zまで記述)
  • target_dir: 圧縮対象のディレクトリパス(末尾の/は不要)

対象ディレクトリ配下のファイルのみを圧縮したい場合は以下

7z a compressed.7z target_dir/*
  • compressed.7z: 圧縮後のファイル名(末尾の.7zまで記述)
  • target_dir: 圧縮対象ファイルが格納されているディレクトリパス

解凍

7z x target.7z
  • target.7z: 対象の7zファイルパス
    zipファイルも7zで解答可能

tar.gzも解凍可能

7z x compressed.tar.gz
  • compressed.tar.gz:対象のtar.gzファイルパス

ただし、tarまでしか解凍しないのでtarを更に解凍する必要がある。
tarコマンドで解凍するほうが手っ取り早い。

kabeckabec

tar

ディレクトリの圧縮

tar -zcvf compressed.tar.gz target_dir
  • compressed.tar.gz: 圧縮後のファイル名(末尾の.tar.gzまで記述)
  • target_dir: 圧縮対象ファイルが格納されているディレクトリパス

対象のディレクトリ内の複数ファイルをtarで固めて(tar ballということがある、固めるだけで圧縮はされていない、所謂アーカイブ)から、gzipで圧縮という処理を上記コマンドとオプションでまとめてできる。

ディレクトリではなく、複数ファイルをtar.gzとして固めたい場合は以下

tar -zcvf compressed.tar.gz file1 file2 file3 dir1 *.sh

※ディレクトリも記述可

.xzのほうが圧縮率が高いがあまり使われているのは見たことがない。

tar cJvf compressed.tar.xz target_dir
  • compressed.tar.xz: 圧縮後のファイル名(末尾の.tar.xzまで記述)
  • target_dir: 圧縮対象ファイルが格納されているディレクトリパス

解凍

tar -zxvf compressed.tar.gz
  • compressed.tar.gz: 対象のtar.gzファイルパス
tar xvf compressed.tar.xz
  • compressed.tar.xz: 対象のtar.xzファイルパス

オプション

option full name mean
-z --gzip gzip形式であることを指定
-c --create 新しく圧縮ファイルをつくる
-v --verbose 処理結果を出力
-f --file 圧縮ファイルの名前
-x --extract 圧縮ファイルからファイルを取り出す
-t --list アーカイブの内容の一覧を表示する

references