LinuxでISOイメージからファイルを抽出およびコピーする3つの方法


Linuxサーバーに大きなISOファイルがあり、そこから1つのファイルにアクセス、抽出、またはコピーしたいとします。どうやってやるの? Linuxでは、いくつかの方法があります。

たとえば、標準のmountコマンドを使用して、ループデバイスを使用して読み取り専用モードでISOイメージをマウントし、ファイルを別のディレクトリにコピーできます。

LinuxでISOファイルをマウントまたは抽出する

これを行うには、ISOファイル(ubuntu-16.10-server-amd64.iso ISOイメージを使用)とマウントポイントディレクトリを使用して、ISOファイルをマウントまたは抽出する必要があります。

まず、マウントポイントディレクトリを作成します。ここに、次のようにイメージをマウントします。

$ sudo mkdir /mnt/iso

ディレクトリが作成されると、ubuntu-16.10-server-amd64.isoファイルを簡単にマウントし、次のコマンドを実行してその内容を確認できます。

$ sudo mount -o loop ubuntu-16.10-server-amd64.iso /mnt/iso
$ ls /mnt/iso/

これで、マウントされたディレクトリ(/ mnt/iso)内に移動してファイルにアクセスするか、cpコマンドを使用してファイルを/tmp ディレクトリにコピーできます。

$ cd /mnt/iso
$ sudo cp md5sum.txt /tmp/
$ sudo cp -r ubuntu /tmp/

注:ディレクトリを再帰的にコピーするために使用される -r オプションは、必要に応じて、コピーコマンドの進行状況を監視することもできます。

7zipコマンドを使用してISOコンテンツを抽出する

ISOファイルをマウントしたくない場合は、7zipをインストールするだけです。これは、TAR、XZ、GZIP、ZIP、BZIP2などのさまざまな形式をパックまたはアンパックするために使用されるオープンソースのアーカイブプログラムです。

$ sudo apt-get install p7zip-full p7zip-rar [On Debian/Ubuntu systems]
$ sudo yum install p7zip p7zip-plugins      [On CentOS/RHEL systems]

7zipプログラムをインストールしたら、7zコマンドを使用してISOファイルの内容を抽出できます。

$ 7z x ubuntu-16.10-server-amd64.iso

注:Linuxのmountコマンドと比較すると、7zipは、アーカイブ形式をパックまたはアンパックするのに十分な速度とスマートさを備えているようです。

isoinfoコマンドを使用してISOコンテンツを抽出する

isoinfoコマンドは、iso9660イメージのディレクトリリストに使用されますが、このプログラムを使用してファイルを抽出することもできます。

私が言ったように、isoinfoプログラムはディレクトリリストを実行するので、最初にISOファイルの内容をリストします。

$ isoinfo -i ubuntu-16.10-server-amd64.iso -l

これで、次のようにISOイメージから単一のファイルを抽出できます。

$ isoinfo -i ubuntu-16.10-server-amd64.iso -x MD5SUM.TXT > MD5SUM.TXT

注: -x オプションがstdoutに抽出されるため、リダイレクトが必要です。

ISOファイルからファイルを抽出またはコピーするための便利なコマンドまたはプログラムを知っている場合は、コメントセクションで共有してください。