こんにちは。関東の大学に通う大学生ミンチ(@programminchi)です。今回は、UNIX(Linux)においてファイルを圧縮、伸張したり、アーカイブする(複数のファイルを1つのファイルにまとめる)方法を紹介し、なぜそのような形式でファイルを相手に送る必要があるのか説明していきます。
なぜファイルの大きさや形式を変えるの?
今回はファイルを圧縮伸張して大きさを変えたり、複数のファイルを1つにまとめてアーカイブファイルとして送る方法を紹介していきますが、そもそもなぜファイルの大きさや形式を変える必要があるのでしょうか?
理由として1番大きいのは、相手にファイルを送信する際に、あまりにも容量の大きいファイルを渡してしまうと、相手側のサーバーが圧迫される(もしくは受け取れない可能性もある)からです。
自分自身がファイルを送ることができたら、向こう側も大丈夫と思うのは間違っていて、場合によっては相手側に大容量ファイルを送って迷惑をかけてしまう可能性もあります。
また、複数のファイルを何回かに分けて送る場合も、相手に何度もダウンロードを行わせる手間をかけさせることになります。
複数のファイルを1つにまとめて送信することによって相手の手間を減らしてあげることができます。
ファイルを圧縮伸張しよう
まずは通常のファイルを圧縮、もしくは圧縮ファイルを伸張してくれるコマンドについて見ていきましょう。
gzipコマンドでファイルを圧縮する
以下のようにgzipコマンドを使うと、容量の大きいファイルを圧縮して、サイズを小さくすることができます。
$gzip file
これだけで通常のファイルが圧縮されてサイズが小さくなります。lsコマンドにlオプションでもつけて実行して、サイズが変わったことを確認してみるとよいでしょう。
一般的にgzipコマンドによって圧縮したファイルには拡張子gzがつきます。
$zcat file(圧縮済)
また、zcatコマンドを実行すると、圧縮したファイルを表示することができます。
gunzipコマンドでファイルを伸張する
相手から圧縮ファイルなどを受け取った時、ファイルを逆に元のサイズに戻す(伸張)ことが必要になります。
$gunzip file(圧縮済)
伸張する時も圧縮の場合と同じで、簡単にファイルを元の大きさに戻すことができます。
tarコマンドで複数のファイルを1つにまとめよう
ここまではファイルを圧縮、伸長する方法を学びましたが、複数のファイルをまとめて相手に送るとき1つのファイルにまとめる(アーカイブする)作業が必要になってきます。
以下ではアーカイブの際に使うtarコマンドについて詳しく見ていきましょう。
複数のファイルをアーカイブファイルにまとめる
複数のファイルをアーカイブファイルとしてまとめる際には、以下のようにコマンドを実行します。
$tar cvf archive.tar file1 file2 file3....
上のようにアーカイブファイルの名前の後に、まとめたいファイルをすべて記述すると、それらのファイルがアーカイブファイルとしてまとめられます。
アーカイブファイルには拡張子tarがつきます。
アーカイブファイル内のファイル名を表示する
もちろん中身を確認するコマンドも用意されています。以下のようにしてください。
$tar tvf archive.tar
ファイルをアーカイブファイルにまとめる時はtarコマンドの後にcvfを付けましたが、今度はtvfを付けます。少しの違いなのでしっかり覚えておいてください。
アーカイブファイルの中にあるファイル名を全て表示してくれます。
アーカイブファイルから特定のファイルを取り出す
ファイルをまとめるコマンドがあるということはファイルを取り出すコマンドも存在します。以下のように実行してください。
$tar xvf archive.tar file1
これもまた、上のコマンドとほとんど違いがないので覚えにくいですがしっかり覚えておいてください。
xvfの後にアーカイブファイルの名前を指定して、その後に取り出したいファイル名を書くとアーカイブファイル内から取り出すことができます。
ファイル名を指定しない場合は全てのファイルが取り出されます。
アーカイブと圧縮を組み合わせよう
基本的にアーカイブファイルは複数のファイルを1つにしているので容量が大きくなることが多いです。
よってアーカイブは圧縮と一緒によく使われます。以下に例を挙げていきます。
$tar cvfz archive.tar.gz file1 file2 file3.... $tar tvfz archive.tar.gz $tar xvfz archive.tar.gz
基本的には上で説明したアーカイブのみの場合と同じで、オプションにzが加えられます。
1番上は複数のファイルをアーカイブファイルにまとめて、さらに圧縮が行われます。
2、3段目はそれぞれ圧縮されたアーカイブファイルの中身を表示、取り出しをしてくれます。
圧縮したアーカイブファイルには拡張子tarとgzがつきます。
まとめ
今回はファイルを送る際に結構使うことの多い圧縮、アーカイブなどの概念を学びました。
地味な作業に見えますが、このひと手間を面倒くさがると相手に迷惑をかけてしまうといったことも起きてしまいます。
コマンドを1つ実行すればすむことなので、この機会に是非覚えていってください。意外と仕事の場などで使うことも多いでしょう。
今後も定期的にコンピュータ系の記事を発信していくので是非、興味のある人はツイッターの方もフォローお願いします!!