【Linux】tar/cpioコマンドでファイルをアーカイブする方法!オプションまとめ

【Linux】tar/cpioコマンドでファイルをアーカイブする方法!オプションまとめ

この記事からわかること

  • Linuxアーカイブとは?
  • tarコマンド使い方
  • cpioコマンドの使い方
  • 両者違い
  • オプション一覧

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

アーカイブとは?

Linuxにおけるアーカイブとは複数のファイルやディレクトリをまとめて1つのファイルにしたもののことです。まとめるといってもファイルの容量は圧縮される訳ではなく、1つのファイルにまとめられるだけです。アーカイブは日本語に訳すと「書庫」という意味になります。

gzipコマンド(容量を圧縮するコマンド)などではファイル形式でないと圧縮できない(=ディレクトリは圧縮できない)ため、ディレクトリを含むファイル群を圧縮したい場合は、アーカイブを作成してから圧縮するといった流れになります。

Linuxではアーカイブを作成できるコマンドが2種類存在します。

アーカイブを作成できるコマンド

それぞれのコマンドで作成されたアーカイブファイルの拡張子は「.tar」と「.cpio」になります。作成時にアーカイブファイルの名称(拡張子を含めたファイル名)は自由に指定できますが、所定の拡張子でないと正常に動作しないこともあるので注意してください。

tarコマンドの使い方

アーカイブファイルを作成

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コマンドでアーカイブを作成する場合はフラグに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コマンドのオプションはフラグとオプションに分かれており、フラグのiInputoOutputを表しています。

フラグ 役割
-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 

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index