An ISO file is a disk image file that contains the entire contents of a CD, DVD, or even a Blu-ray disc. Various tools are available to access these contents under Linux.
In this tutorial, we’ll explore different methods for extracting ISO images in Linux. We’ll also examine their execution time to find out which one is the fastest.
2. Using mount
mount is a built-in tool in Linux that can be used to mount ISO files to access their contents.
Firstly, let’s make a directory:
$ mkdir /mnt/extract
Secondly, we’ll mount it as a loop device:
$ mount -o loop IsoFile.iso /mnt/extract/
Here, we use the -o flag of mount to specify the loop option. Now, the entire contents of our ISO file are accessible in the specified path.
3. Using 7z
7z is a file archiver that can extract contents from ISO files.
$ yum install p7zip p7zip-plugins
Now, we can use the x option to extract a file. We’ll extract an ISO in the current directory:
$ 7z x IsoTest.iso 7-Zip  16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,2 CPUs Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz (906EA),ASM,AES-NI) Scanning the drive for archives: 1 file, 4980736 bytes (4864 KiB) Extracting archive: IsoTest.iso -- Path = IsoTest.iso Type = FAT Physical Size = 4980736 File System = FAT16 Cluster Size = 1024 Free Space = 2783232 Headers Size = 61440 Sector Size = 512 ID = 3481680618 Everything is Ok Folders: 24 Files: 29 Size: 2119946 Compressed: 4980736
Firstly, the 7z command scans the ISO file. Then, it shows the path, the used filesystem, and other details. Next, we can see the message Everything is Ok and the number of extracted files and folders with sizes.
4. Using bsdtar
If required, we can still install it via our package manager:
$ yum install bsdtar
Then, we can extract an ISO file:
$ bsdtar -xf IsoFile.iso
As a result, we extracted the ISO file in the current directory. In this case, the x and f options were used. Among them, -x is for extracting to disk, while -f supplies the file we want to work with.
5. Using isoinfo
It’s part of the genisoimage package. Let’s install it with yum:
$ yum install genisoimage
Once installed, we can list the content of an ISO file:
$ isoinfo -i myIsoFile.iso -l Directory listing of / d--------- 0 0 0 2048 Oct 28 2015 [ 29 02] . d--------- 0 0 0 2048 Oct 28 2015 [ 29 02] .. d--------- 0 0 0 2048 May 26 2013 [ 30 02] BOOT ---------- 0 0 0 96576 May 8 2022 [ 49 00] myFile.txt Directory listing of /BOOT/ d--------- 0 0 0 2048 May 26 2013 [ 30 02] . d--------- 0 0 0 2048 Oct 28 2015 [ 29 02] .. ---------- 0 0 0 11424857 May 8 2022 [ 49 00] CORE.GZ;1 d--------- 0 0 0 2048 Nov 30 2021 [ 31 02] ISOLINUX ---------- 0 0 0 5081088 May 8 2022 [ 5628 00] VMLINUZ.;1 ...
We used the -i option to specify the ISO-9660 image. Moreover, the -l option runs the equivalent of ls -lR inside of an ISO file and produces the output.
We can see each directory listed separately. Then, we can extract files via -x and the file path:
$ isoinfo -i myIsoFile.iso -x myFile.txt > myExtractedFile.txt
In this example, we extracted myFile.txt to a new file named myExtractedFile.txt. We can only use this command to extract a file, not directories.
6. Using xorriso
xorriso is a utility that can be used to create, manipulate, and extract ISO files.
First, we’ll install it with our package manager:
$ yum install xorriso
Now, we can extract an ISO file:
$ xorriso -osirrox on -indev IsoFile.iso -extract / myExtractDirectory xorriso 1.5.4 : RockRidge filesystem manipulator, libburnia project. Copying of file objects from ISO image to disk filesystem is: Enabled xorriso : NOTE : Loading ISO image tree from LBA 0 xorriso : UPDATE : 11 nodes read in 1 seconds xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded Drive current: -indev 'IsoFile.iso' Media current: stdio file, overwriteable Media status : is written , is appendable Boot record : El Torito Media summary: 1 session, 8264 data blocks, 16.1m data, 38.1g free Volume id : 'Core' xorriso : UPDATE : 9 files restored ( 16148k) in 1 seconds = 11.9xD Extracted from ISO image: file '/'='/root/temp-01/myExtractDirectory'
To do so, we’ve used these options:
- osirrox on – enable the specific extension for the ISO filesystem
- indev – find the input file to extract
- extract iso_path disk_path – our actual command that extracts contents from iso_path to disk_path
As a result, we can see information about our media, the number of files, spent time, and others.
7. Measuring Times
In this section, we’re going to measure the total time taken by each command to find out which one is faster. We’ll use the time command for this. Moreover, we’ll skip the isoinfo command, as it can’t extract all ISO files.
Notably, the performance measurements in this section are based on a single run of each command. So, they may vary depending on various factors, including system configuration, hardware capabilities, and caching mechanisms. Hence, caching can play an important role in the results. Therefore, runs of the same commands may show different results if we don’t clear the cache and take other factors into account.
Let’s start with the mount command:
$ time (mount -o loop myIsoLive.iso /mnt/extract/ && cp -R /mnt/extract /home/newPath/) ... real 0m9.260s user 0m0.040s sys 0m4.337s
The mount command only reads the filesystem’s header and doesn’t extract any data. Therefore, we combined the time taken for mounting with the time needed for copying the files from the mount point to another destination.
Afterward, we check the 7z command:
$ time 7z x myIsoLive.iso ... real 0m4.897s user 0m0.092s sys 0m2.927s
Then, we can check bsdtar:
$ time bsdtar -xf myIsoLive.iso ... real 0m5.653s user 0m0.115s sys 0m3.075s
Finally, we’ll measure the time of xorriso:
$ time xorriso -osirrox on -indev myIsoLive.iso -extract / myExtract ... real 0m5.367s user 0m0.549s sys 0m2.866s
In the result, we can see the actual times after the real label. Therefore, by comparing these values, we can see that the 7z command seems quicker than the others.
In this article, we discussed various ways to extract an ISO file in Linux.
Sometimes we might prefer to use a built-in command instead of installing new tools, so we tested mount. In other cases, we just need to extract a single file from an ISO image, instead of extracting the entire image file, or just want to use another tool. For each case, we compared the performance by using the time command.