在Linux 统下从ISO镜像中提取和复制文件的3种方法

假设你的 Linux 服务器上有一个超大的 ISO 镜像文件,你想要打开它,然后提取或者复制其中的一个文件。你会怎么做呢?

其实在 Linux 系统里,有很多方法来实现这个要求。

比如说,你可以使用传统的 mount 命令以只读方式把 ISO 镜像文件加载为 loop 设备,然后再把文件复制到另一个目录。

在 Linux 系统下提取 ISO 镜像文件

为了完成该测试,你得有一个 ISO 镜像文件(我使用 ubuntu-16.10-server-amd64.iso 系统镜像文件)以及用于挂载和提取 ISO 镜像文件的目录。

首先,使用如下命令创建一个挂载目录来挂载 ISO 镜像文件:


  1. $ sudo mkdir /mnt/iso 

目录创建完成后,你就可以运行如下命令很容易地挂载 ubuntu-16.10-server-amd64.iso 系统镜像文件,并查看其中的内容。


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

在 Linux 系统里挂载 ISO 镜像

现在你就可以进入到挂载目录 /mnt/iso 里,查看文件或者使用 cp 命令把文件复制到 /tmp 目录了。


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

在 Linux 系统中复制 ISO 镜像里的文件

注意:-r 选项用于递归复制目录里的内容。如有必要,你也可以监控复制命令的完成进度。

使用 7zip 命令提取 ISO 镜像里的内容

如果不想挂载 ISO 镜像,你可以简单地安装一个 7zip 工具,这是一个自由而开源的解压缩软件,用于压缩或解压不同类型格式的文件,包括 TAR、XZ、GZIP、ZIP、BZIP2 等等。


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

7zip 软件安装完成后,你就可以使用7z 命令提取 ISO 镜像文件里的内容了。


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

使用 7zip 工具在 Linux 系统下提取 ISO 镜像里的文件

注意:跟 Linux 的 mount 命令相比起来,7zip 在压缩和解压缩任何格式的文件时速度更快,更智能。

使用 isoinfo 命令来提取 ISO 镜像文件内容

虽然 isoinfo 命令是用来以目录的形式列出 iso9660 镜像文件的内容,但是你也可以使用该程序来提取文件。

我说过,isoinfo 程序会显示目录列表,因此先列出 ISO 镜像文件的内容。


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

Linux 里列出 ISO 文件的内容

现在你可以按如下的方式从 ISO 镜像文件中提取单文件:


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

注意:因为 -x 解压到标准输出,必须使用重定向来提取指定文件。

从 ISO 镜像文件中提取单个文件

就到这里吧,其实还有很多种方法来实现这个要求,如果你还知道其它有用的命令或工具来提取复制出 ISO 镜像文件中的文件,请在下面的评论中跟大家分享下。

作者:Ravi Saive

来源:51CTO

时间: 2024-08-25 15:54:06

在Linux 统下从ISO镜像中提取和复制文件的3种方法的相关文章

在 Linux 系统下从 ISO 镜像中提取和复制文件的 3 种方法

假设你的 Linux 服务器上有一个超大的 ISO 镜像文件,你想要打开它,然后提取或者复制其中的一个文件.你会怎么做呢? 其实在 Linux 系统里,有很多方法来实现这个要求. 比如说,你可以使用传统的 mount 命令以只读方式把 ISO 镜像文件加载为 loop 设备,然后再把文件复制到另一个目录. 在 Linux 系统下提取 ISO 镜像文件 为了完成该测试,你得有一个 ISO 镜像文件(我使用 ubuntu-16.10-server-amd64.iso 系统镜像文件)以及用于挂载和提取

VB.NET中使用FTP下载文件的两种方法

下载   .net没有专门处理FTP的类,我们可以通过调用系统自带的FTP.EXE 或者是调用win32 API中的wininet.dll来完成基本操作.希望以下的代码能为大家抛砖引玉. 方法一: 使用Ftp.exe ,通过process类来调用它. Imports System.Diagnostics ...   Public Sub GetFileByCallFtp()        '定义ProcessStartInfo,Process的启动信息.         Dim psi As N

C#中获取、生成随机数的三种方法

  这篇文章主要介绍了C#中获取.生成随机数的三种方法,本文讲解了Random 类生成法.Guid 类生成法以及RNGCryptoServiceProvider 类生成法,需要的朋友可以参考下 随机数的定义为:产生的所有数字毫无关系. 在实际应用中很多地方会用到随机数,比如需要生成唯一的订单号. 在C#中获取随机数有三种方法: 一.Random 类 Random类默认的无参构造函数可以根据当前系统时钟为种子,进行一系列算法得出要求范围内的伪随机数. 代码如下: Random rd = new R

Excel中常见的拆分单元格两种方法

  下图中的表头就是已经合并了四个单元格的一个大单元格,本教程需要讲述的就是如何将这个大的单元格拆分成原有的四个小单元格.下面请看小编图文详解Excel中常见的拆分单元格两种方法. 拆分单元格方法一 选中要拆分的大单元格,切换到"开始"选项卡,在"对齐方式"组中单击"合并后居中"按钮.这个按钮之前是选中状态,单击之后,就取消选中了,达到了拆分的效果. 拆分单元格方法二 1.选中要合并的单元格,单击鼠标右键,在弹出的快捷菜单中选择"设置单

JavaScript中字符串(string)转json的2种方法

  这篇文章主要介绍了JavaScript中字符串(string)转json的2种方法,两种方法分别是使用js函数eval()和.使用jquery.parseJSON()方法,需要的朋友可以参考下 第一种方式: 使用js函数eval(); testJson=eval(testJson);是错误的转换方式. 正确的转换方式需要加(): testJson = eval("(" + testJson + ")"); eval()的速度非常快,但是他可以编译以及执行任何ja

Shell脚本中引用、调用另一个脚本文件的2种方法

  这篇文章主要介绍了Shell脚本中引用.调用另一个脚本文件的2种方法,本文介绍了两种方法的语法,然后给出实际使用实例和一些要注意的地方,需要的朋友可以参考下 在Java,Python中,可以用import的方式来进行脚本或模块之间调用,例如: 代码如下: >>> import math >>> math.sqrt(4) 2.0 在Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数呢? 方法一: . ./subscript.sh 方法二: source

C#中调用SAPI实现语音合成的2种方法

  这篇文章主要介绍了C#中调用SAPI实现语音合成的2种方法,本文直接给出示例代码,需要的朋友可以参考下 我们都知道现在的语音合成TTS是可以通过微软的SAPI实现的,好处我就不多说了,方便而已,因为在微软的操作系统里面就自带了这个玩意,主要的方式有两种: 1.使用COM组件技术,不管是C++,C#,Delphi都能玩的转,开发出来的东西在XP和WIN7都能跑.(要引入SpeechLib,好像在项目上点引用,然后选到系统COM吧,好久没弄,记不清楚了) 2.使用WIN7的windows api

Python中每次处理一个字符的5种方法

  这篇文章主要介绍了Python中每次处理一个字符的5种方法,即把字符串分割成字符数组或把字符串切割成单独字符的方法,需要的朋友可以参考下 目的 对字符串的每个字符进行处理,其实每个字符(Char)就是一个长度为1的字符串. 方法 1.使用内建函数list() 代码如下: >>> A_string='Python' >>> char_list=list(A_string) >>> char_list ['P', 'y', 't', 'h', 'o',

Laravel中使用自己编写类库的3种方法

 这篇文章主要介绍了Laravel中使用自己编写类库的3种方法,本文讲解了增加可直接实例化的类.增加可直接调用的函数.增加稍微复杂的类库三种方式,需要的朋友可以参考下     虽然Composer使得我们可以重用很多现有的类库(例如packagist.org中的),但是我们仍然可能用到一些不兼容composer的包或者类库.另外在某一项目中,我们也可能会创建某一类库,而且可能并没有制作成为composer package 的打算.这个时候我们可以通过以下方式来使用自己的特有类库. 增加可直接实例