はじめに
USBなどの外部メモリにデータを移行する際、データを圧縮して渡せると、よりたくさんのデータを一度に移すことができますよね。特に、普段は見返さない写真や動画などは、普段使っているPCから移行しておきたかったりします。
そこで、データを圧縮するコマンドgzip
について勉強したので簡単にまとめておきます。
圧縮・解凍
圧縮する際には、gzip
コマンドを使用し、
解凍する際には、gunzip
コマンド、もしくはdオプション
つきのgzip
コマンドを使用します。
1. 流れで確認
中身がaaaaaaaaaaaaaaaaaaaa
の文字列であるa.txtファイルに対して処理をしていきます。
ファイルを圧縮
$ gzip a.txt
サイズを確認
lオプション
で圧縮されたファイルの情報(サイズ、圧縮率、ファイル名)を表示することができます。
$ gzip -l a.txt
compressed uncompressed ratio uncompressed_name
30 21 -42.9% a.txt
結果をテーブルで表すと次のようになります。
サイズ(圧縮後) | 30 |
サイズ(圧縮前) | 21 |
圧縮率 | -42.9% |
ファイル名(圧縮前) | a.txt |
逆にファイルサイズが大きくなってしまっています。圧縮率もマイナスとなっています。こちらに関しては、後ほど確認します。
ファイルを解凍
圧縮後のファイルはファイル名に.gz拡張子がついています。
$ gzip -d a.txt.gz
2. 圧縮ファイルのサイズが小さくなっていない件
画像ファイルと動画ファイルに関しても圧縮を行い、サイズについて確認してみました。
画像ファイルに関して
$ gzip a.jpeg
$ gzip -l a.jpeg.gz
compressed uncompressed ratio uncompressed_name
6329598 6347555 0.2% a.jpeg
動画ファイルに関して
$ gzip a.mov
$ gzip -l a.mov
compressed uncompressed ratio uncompressed_name
2014167723 2014467159 0.0% a.mov
わずかにファイルサイズが小さくなっていますが、これでは圧縮する意味はあるのかと考えものです。。
結論
圧縮に向かないファイルがあるため、対象ファイルを圧縮するかどうかは見極める必要があります。
また、ペイントなどのBMP(ビットマップ)ファイルなどが圧縮には適している(圧縮効率が良い)ようです。
補足
ファイルのサイズはバイト単位で出力されますが、容量が大きいファイルはサイズが掴みにくいということがあります。その際、hオプション
とlオプション
とつけることで、単位をつけてわかりやすく出力することができるので、確認します。
$ ls -hl a.txt
-rw-r--r-- 1 takuyanin staff 21B Jan 9 21:50 a.txt
$ ls -hl a.jpeg
-rw-r--r-- 1 takuyanin staff 6.1M Sep 9 15:55 a.jpeg
$ ls -hl a.MP4
-rw-r--r--@ 1 takuyanin staff 1.9G Sep 9 16:24 a.mov
このように、B(バイト)
、M(メガ)
、G(ギガ)
といった単位とともにファイルサイズが確認できます。
便利ですね。
おわりに
個人的に、もっとも外部メモリに移したかった画像ファイル、動画ファイルに関してはあまり効果がないということがわかりました。
少し残念な結果となりましたが勉強になったのでよしとします。笑
こちらの記事が役に立ったという方は、いいね、よろしくお願いします(^^)
また、takuyaninのマイページにlinuxコマンドなどに関していくつか記事をまとめてますので、よければご参考ください。