支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • Linuxで便利な「tar」コマンド

はじめに

Linux系のOSにはGUIの機能が充実しているものもありますが、依然として細かい操作をする際にはコマンド入力が欠かせません。またLinuxコマンドの中にはUNIX系OSが主流であった時代から残っているものがいくつか存在しますが、「tar」はそんなコマンドの一つです。今回は「tar」コマンドを利用してできること、オプション含めた利用方法を紹介していきます。「tar」コマンドの存在は知っているものの使い方がわからない、使い方がわからなくなったという方は、ぜひ基本に立ち返るためにこの記事を活用してみてください。

「tar」コマンドの概要

「tar」は本来アーカイブファイルを作成するためのコマンドです。中には圧縮や解凍、展開をする際に利用するコマンドと認識している方もいるかもしれませんがそれも間違いではなく、実際にtarコマンドで可能なことです。しかしあくまで圧縮や解凍、展開をする際は該当のオプションが付けられた時のみで、「tar」コマンドを使った場合にそれらは必須ではないことをあらかじめ覚えておきましょう。

「アーカイブ」は日本語に直訳すると記録や書庫を意味します。よくブログの過去記事や過去のデータを格納するフォルダに「archive」というように命名されることがあるので、過去のデータを意味しているように捉えがちですが、実際はデータの集まりを指しています。「tar」コマンドで作成するアーカイブファイルも複数ファイルの集まりのことであり、この集まりを展開したり、圧縮・解凍したりできます

コマンドの説明が理解しやすいように、圧縮、解凍、展開の意味についてもあらかじめ説明しておきます。「圧縮」や「解凍」に関してはWindowsやMac等のパソコンで普段から行っている方も多いことでしょう。送信先メールサーバーが許容している容量に収めるため、メールに添付する前に圧縮する、ネットワークに負荷をかけないため、FTPサーバー上にデータをアップロード前に圧縮する、あるいはメールで送られてきた添付データを開くために解凍するという行為等です。「tar」での圧縮、解凍もこれと同じことと考えて問題ありません。「展開」は言葉のままにはなりますが、圧縮されていないアーカイブファイルを開くことを指します。

「tar」コマンドの利用方法

「ls」や「cd」「mv」等のコマンドはオプションを付けずに単独で実行することがありますが、「tar」コマンドは基本的にオプションを付与して実行します。またオプションは複数付加することが多いです。圧縮する際、解凍する際に付けるオプションを比較すると、複数のうち一つのオプションを変更するだけで実行結果が変わるという分かりづらさもあるので、ぜひオプションの付け方まで正確に覚えておくことをおすすめします。なおどのコマンドにも共通することですが、「man」というコマンドを実行すると英文とはなるものの、そのコマンドのマニュアルを画面上に表示できます。「tar」コマンドの意味や使い方はおおよそ理解していても、どうしても目的のオプションが思い出せないという場合はマニュアルを利用すると良いでしょう。「tar」コマンドのマニュアルを見たい時は「man tar」を実行します。

「tar」には多くのオプションがあり、その中から目的のものを選んでtarの後に付加していくため、一見意味のないアルファベットが羅列されている状態となります。普段から頻繁に利用していないと、オプションの意味を一つずつ理解して付加していくことは難儀とも言えます。そのためまずはよく使われるコマンドの形式からオプションの意味を説明し、その後にその他のコマンドについて紹介していきます。なお基本的にオプションを入力する順は問われませんが、一部オプションについては指定があるため、その点も解説していきます。またアーカイブされたファイルの拡張子は「.tar」となり、さらに圧縮もされた場合は「.tar.gz」になることにご注意ください。

圧縮ファイル作成時のオプション

一つ目は「tar zcvf アーカイブファイル名(.tar.gz) アーカイブしたいファイル1 アーカイブしたいファイル2 」というコマンドで、これを実行することで指定のアーカイブファイルにファイル1、2をまとめ、さらに圧縮できます。直接圧縮に関係するオプションは「z」です。「z」を付けるとgzipというファイル形式への圧縮が行われます。gzipやzipのように圧縮後のファイルの拡張子には「z」が含まれることが多いので、圧縮のオプションは「z」だと認識しておくと覚えやすいでしょう。その次の「c」は新規にアーカイブファイルを作成する際に付けるオプションです。「v」はアーカイブの結果を表示させるオプションで、「f」はアーカイブファイルを指定する直前に置くオプションです。「f」の次には必ずアーカイブファイル名がある必要があるので「f」は全オプションの最後に付加しなければなりません。以上のように「zcvf」のオプションを使うことでファイルを指定した名称でアーカイブし、gzipで圧縮後にアーカイブ結果を画面上に表示させるといったことが可能です。圧縮せずアーカイブしたいだけの場合は「cvf」のみを付加します。

圧縮ファイルを解凍する時のオプション

解凍は「tar zxvf アーカイブファイル(.tar.gz)」というコマンドで可能です。こちらは圧縮ファイルを解凍して展開するコマンドで、圧縮時とは「x」の部分のみ異なります。「x」は単純にアーカイブを展開するためのコマンドとなり、zと共に使うことで圧縮したファイルを解凍したうえで展開するという意味になります。そのため圧縮していないファイルを展開する場合は「z」が不要となり、「tar xvf アーカイブファイル」だけとなります。以上のように「zxvf」のオプションを使うことで指定したアーカイブを解凍し、展開してアーカイブ結果を画面上に表示させるといったことが可能です。

その他のオプション

圧縮・解凍だけでz、c、v、f、xと5つのオプションを利用しましたが、「tar」にはその他にも多くのオプションがあります。その中から利用頻度の高いものをアルファベット順に紹介していきます。

-A(--catenate、--concatenate)」

アーカイブされたファイル群に後からアーカイブファイルを追加できます。大文字であることにご注意ください。

-h(--dereference)」

シンボリックリンクをたどることができます。

-j(--bzip2)」

bzip2形式での圧縮、解凍、展開ができます。圧縮後のファイルの拡張子は「.tar.bz2」となります。なお「bzip2」はgzipより圧縮率が高いと言われていますが、処理に時間がかかる形式です。

-k(—keep-old-files)」

既存ファイルを置き換えてしまうことを防ぎます。

-N 日付(--newer=日付、--after-date=日付)」

Nの後に指定した日付やファイルより新しいファイルだけをアーカイブに保存します。大文字であることにご注意ください。

-r(--append)」

アーカイブの最後に指定したファイルを追加できます。

-U(—unlink-first)」

ファイルの上書き前に対象ファイルを削除します。大文字であることにご注意ください。

-u(--update)」

アーカイブファイル内にあるファイルを参照して、同名の新しいファイルが別にある場合はアーカイブファイル内のファイルを更新できます。

-d(--diff、--compare)」

アーカイブとファイルシステムを比較します。

-t(--list)」

アーカイブ内にあるデータを一覧で表示できます。

まとめ

サーバーを運用していると、障害の調査やデータの復元のためだけではなく、警察に調査に伴う情報開示を求められた時等のためにある一定期間はデータを残しておく必要があるので、大量のログデータやバックアップファイルを保持していることが多く、ディスク容量を消費します。そのため圧縮は欠かせない作業です。また.tarでまとめられているOSシステムやソフトウェアのデータをサーバーで利用するためにダウンロードして解凍・展開する場面もあります。今回紹介した「tar」コマンドは古くからあるものの、近年でもサーバーを運用するうえで利用する頻度の多いコマンドの一つです。オプションを複数付けることが多く覚えづらいため、意識的に使いながら体に馴染ませて便利に使いこなしてみてはいかがでしょうか。