【Linux】tar/cpioコマンドでファイルをアーカイブする方法!オプションまとめ
この記事からわかること
- Linux:アーカイブとは?
- tarコマンドの使い方
- cpioコマンドの使い方
- 両者の違い
- オプション一覧
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
アーカイブとは?
Linuxにおけるアーカイブとは複数のファイルやディレクトリをまとめて1つのファイルにしたもののことです。まとめるといってもファイルの容量は圧縮される訳ではなく、1つのファイルにまとめられるだけです。アーカイブは日本語に訳すと「書庫」という意味になります。
gzipコマンド(容量を圧縮するコマンド)などではファイル形式でないと圧縮できない(=ディレクトリは圧縮できない)ため、ディレクトリを含むファイル群を圧縮したい場合は、アーカイブを作成してから圧縮するといった流れになります。
Linuxではアーカイブを作成できるコマンドが2種類存在します。
アーカイブを作成できるコマンド
- tarコマンド
- cpioコマンド
それぞれのコマンドで作成されたアーカイブファイルの拡張子は「.tar」と「.cpio」になります。作成時にアーカイブファイルの名称(拡張子を含めたファイル名)は自由に指定できますが、所定の拡張子でないと正常に動作しないこともあるので注意してください。
tarコマンドの使い方
- 拡張子:「.tar」
- 書式:$ tar [オプション] ファイル名
- 作成コマンド:$ tar -cvf アーカイブ名 ディレクトリ名
- 展開コマンド:$ tar -xvf アーカイブ名
アーカイブファイルを作成
tar
コマンドでアーカイブを作成する場合はオプションc
を指定します。
v
は結果の詳細を表示、f
はファイルを指定するオプションです。
$ tar -cvf imgarchive.tar image // 作成
アーカイブファイルを展開
アーカイブを展開するにはtar
コマンドのオプションにx
を指定します。
$ tar -xvf imgarchive.tar // 展開
アーカイブファイルの中身を確認
アーカイブの中身を確認するにはtar
コマンドのオプションにt
を指定します。
$ tar -tvf imgarchive.tar
drwxr-xr-x 6 501 20 0 5 26 21:53 image
-rwxr-xr-x 1 501 20 1076 5 18 06:32 image1.png
-rwxr-xr-x 1 501 20 1076 5 18 06:32 image2.png
-rwxr-xr-x 1 501 20 1076 5 18 06:32 image3.png
-rwxr-xr-x 1 501 20 1076 5 18 06:32 image4.png
アーカイブファイルを圧縮
gzip
コマンドではディレクトリの圧縮ができないため、先にアーカイブを作成してファイル形式にしてから圧縮します。
$ tar -cvf imgarchive.tar image
$ gzip imgarchive.tar // 圧縮
$ ls
imgarchive.tar.gz
tarコマンドのオプション一覧
実はアーカイブを作成するtar
コマンドにはgzip形式の圧縮を行えるオプションが備わっています。指定するだけでアーカイブ作成と圧縮までを一気に行うことも可能です。
$ tar -czvf imgarchive.tar.gz image // アーカイブ&圧縮
$ ls
imgarchive.tar.gz
$ tar -xzvf imgarchive.tar.gz // 解凍&展開
オプション | 役割 |
---|---|
c | アーカイブを作成 |
x | アーカイブを展開 |
v | 結果を表示 |
f | ファイルを指定 |
t | アーカイブの内容を確認 |
r | アーカイブにファイルを追加 |
j | bzip2形式の圧縮(解凍) |
J | xz形式の圧縮(解凍) |
z | gzip形式の圧縮(解凍) |
--delete | アーカイブからファイルを削除 |
tar
コマンドのオプションは「-
」を省略してもOKです。
$ tar cvf imgarchive.tar image // 作成
cpioコマンドの使い方
- 拡張子:「.cpio」
- 書式:$ cpio フラグ [オプション]
- 作成コマンド:$ cpio -o < ファイル名> アーカイブ名
- 展開コマンド:$ cpio -i < アーカイブ名
cpio
コマンドでは引数として渡せないのでリダイレクトやパイプを使ってファイルを指定します。
アーカイブファイルを作成
cpio
コマンドでアーカイブを作成する場合はフラグにo
を指定します。
$ cpio -o < image > imgarchive.cpio // 作成
カレントディレクトリ内のアーカイブを作成したい場合はls
コマンドとパイプ(|
)を使用することも可能です。
$ ls | cpio -o > current.cpio // 作成
アーカイブファイルを展開
アーカイブを展開するにはcpio
コマンドのフラグにi
を指定します。カレントディレクトリに展開されたファイル群が生成されます。
$ cpio -i < imgarchive.cpio // 展開
拡張子が「.tar
」でも可能です。
$ cpio -i < imgarchive.tar // 展開
アーカイブファイルの中身を確認
アーカイブの中身を確認するにはcpio
コマンドのオプションにv
を指定します。
$ cpio -iv < imgarchive.cpio
image
image1.png
image2.png
image3.png
image4.png
cpioコマンドのオプション一覧
cpioコマンドのオプションはフラグとオプションに分かれており、フラグのi
はInput、o
はOutputを表しています。
フラグ | 役割 |
---|---|
-i [オプション] | アーカイブを作成 |
-o [オプション] | アーカイブを展開 |
-p [オプション] ディレクトリ名 | 別ディレクトリにコピー |
オプション | 役割 |
-A | アーカイブの内容を確認 |
-d | ディレクトリを作成 |
-r | ファイル名を対話モードで変更 |
-t | コピーせず一覧表示 |
-m | 元ファイルの更新時間を変更しない |
-v | 一覧表示 |
tarコマンドとcpioコマンドの違い
両者の大きな違いはファイルの指定方法と圧縮(解凍)できるかどうかの違いです。
ファイルを指定する
$ tar -cvf imgarchive.tar image
$ cpio -o < image > imgarchive.cpio
tarコマンドはgzipなどの圧縮形式に対応
$ tar -cvfJ imgarchive.tar.xz image
$ tar -cvfj imgarchive.tar.bz2 image
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。