`
leonzhx
  • 浏览: 796532 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

第九章 档案与文件系统的压缩与打包

阅读更多

1.  Gzip 格式规范: http://www.ietf.org/rfc/rfc1952.txt

 

2.  以下列出几个常见的压缩文件扩展名:

扩展名 压缩类型
*.Z compress 程序压缩的档案
*.gz gzip 程序压缩的档案
*.bz2 bzip2 程序压缩的档案
*.tar tar 程序打包的数据,并没有压缩过
*.tar.gz tar 程序打包的档案,并且经过 gzip 的压缩
*.tar.bz2 tar 程序打包的档案,并且经过 bzip2 的压缩

gzip 是由 GNU 计划所开发出来的压缩指令,该指令已经取代了 compress。后来 GNU 又开发出 bzip2 这个压缩比更好癿压缩指令。不过,它们仅能对一个档案进行压缩与解压缩。tar 可以将很多档案『打包』成为一个档案,单纯的 tar 功能仅是『打包』而已,并没有提供压缩的功能。后来,GNU 计划中,将整个 tar 与压缩的功能结合在一起。

 

3.  gzip 是应用度最广的压缩指令,目前 gzip 可以解开 compress, zipgzip 等软件所压缩的档案:

# gzip [-cdtv#] 文件名
# zcat 文件名.gz

 选项说明如下:

 

选项 功能
-c 将压缩的数据输出到屏幕上,可透过数据流重导向来处理
-d 解压缩
-t 用来检验压缩文件的一致性,看看档案有无错误
-v 可以显示出原档案/压缩文件案的压缩比等详细信息
-# 压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好,默认是 -6

当你使用 gzip 进行压缩时,在默认状态下原本的档案会被压缩成为 .gz 的档名, 源文件就不再存在了。gzip -d (等价于gunzip)会将原本的 .gz 文件删除,解压出原本的档案。zcat 可以读取压缩后的文本文件的内容。

 

4.  bzip2 则是为了取代 gzip 并提供更佳的压缩比而来的:

# bzip2 [-cdkzv#] 文件名
# bzcat 文件名.bz2

 选项说明如下:

 

选项 功能
-c 将压缩的数据输出到屏幕上,可透过数据流重导向来处理
-d 解压缩
-z 压缩
-v 可以显示出原档案/压缩文件案的压缩比等详细信息
-# 压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好,默认是 -6

当你要解开一个压缩文件时, 这个档案的名称为 .bz, .bz2, .tbz, .tbz2 等等,那么就可以尝试使用 bzip2 来解压。bunzip2 bzip2 -d 是等价的。用 bzip2 压缩后,源文件也不会存在了。

 

5.  虽然 gzipbzip2 也能够对目录进行压缩, 但这两个指令对目录的压缩指的是『将目录内的所有档案 "分别" 进行压缩』的动作。tar 可以将多个目录或档案打包成一个大档案,同时还可以通过 gzip/bzip2 的支持,将该档案同时进行压缩:

# tar [-j|-z] [cv] [-f 建立的文件名] filename... <==打包与压缩
# tar [-j|-z] [tv] [-f 建立的文件名] <==察看档名
# tar [-j|-z] [xv] [-f 建立的文件名] [-C 目录] <==解压缩

 选项说明如下:

 

选项 功能
-c 建立打包档案,可搭配 -v 来察看过程中被打包的档名(filename)
-t 察看打包档案的内容含有哪些档名
-x 解打包或解压缩,可以搭配 -C 在特定目录解开
-j 通过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2
-z 透过 gzip 的支持进行压缩/解压缩:此时档名最好为 *.tar.gz
-v 在压缩/解压缩的过程中,将正在处理的文件名显示出来
-f filename -f 后面要立刻接要被处理的压缩文件名
-C 目录 用在解压缩时,若要在特定目录解压缩,可以使用
-p 保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
-P 保留绝对路径,亦即允许备份数据中含有根目录存在
--exclude=FILE 在压缩的过程中,不要将 FILE 打包

最简单地使用 tar 有以下方式:

    1)  压 缩:tar -jcv -f filename.tar.bz2 要被压缩的档案或目录名称

    2)  查 询:tar -jtv -f filename.tar.bz2

    3)  解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录

 

6.  如果我只想要解开打包档案内的其中一个档案而已,只要使用 -jtv 找到你要的档名,然后:

# tar -jxv -f 打包档.tar.bz2 待解开档名

 

7.  以下指令可以打包 /etc/ /root 这两个目录,但却不会打包 /root/etc* 开头的档案,而且这个新的打包档案会放置成为 /root/system.tar.bz2 , 当然这个档案自己不要打包自己 (因为这个档案放置在 /root 底下):

# tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc* --exclude=/root/system.tar.bz2 /etc /root

 

8.  如果你只想要备份新的档案而已,可以使用--newer或--newer-mtime选项,前者既包含mtime也包含ctime:

# tar -jcvf /root/etc.newer.then.passwd.tar.bz2 --newer-mtime="2008/09/29" /etc/*

9.  如果用tar打包出来的文件,没有压缩,我们一般称其为tarfile,如果压缩了,则称为tarball

 

10.  tar还能够将档案打包到磁带机 (tape)上,磁带机由于是一次性读取/写入的装置,因此我们不能够使用类似 cp 等指令来复制:

# tar -cv -f /dev/st0 /home /root /etc

11.  当-f后跟的是减号(-)时,代表标准输出(压缩时)或标准输入(解压时),比如,下列命令等价于cp -r /etc

 

# tar -cvf - /etc | tar -xvf -

 

12.  dump 指令除了能够对整个 filesystem 备份外,也能够对目录来备份,还可以制定等级:




dump的语法如下:

 

# dump [-Suvj] [-level] [-f 备份档] 待备份资料
# dump -W

 选项说明如下:

 

选项 功能
-S 仅列出后面的待备份数据需要多少磁盘空间才能够备份完毕
-u 将这次 dump 的时间记录到 /etc/dumpdates 档案中
-v dump 档案的过程显示出来
-j

加入 bzip2 的支持,将数据进行压缩,默认 bzip2 压缩等级为 2

一般来说 dump 不会自动使用压缩的功能。

-level dump 等级,从 -0 ~ -9 共十个等级
-v 在压缩/解压缩的过程中,将正在处理的文件名显示出来
-f 后面接产生的档案,亦可接例如 /dev/st0 装置文件名等
-W 列出在 /etc/fstab 里面的具有 dump 设定的 partition 是否有备份过

 

dump在备份数据时:

    1)  当待备份的资料为单一文件系统时,那么该文件系统可以使用完整的 dump 功能,包括利用 0~9 的数个 level 来备份,同时,备份时可以使用挂载点或装置文件名 来进行备份。

    2)  待备份的数据只是目录,并非单一文件系统时,备份会有如下限制:

        a)  所有的备份数据都必项要在该目录底下;

        b)  且仅能使用 level 0 ,亦即仅支持完整备份而已;

        c)  不支持 -u 选项,亦即无法建立 /etc/dumpdates 这个个别 level 备份的时间记录文件;

 

13.  dump 的复原使用的是 restore 这个指令:

 

# restore -t [-f dumpfile] [-h]     <==用来察看 dump 档
# restore -C [-f dumpfile] [-D 挂载点] <==比较dump与实际档案
# restore -i [-f dumpfile] <== 进入互动模式
# restore -r [-f dumpfile] <==还原整个文件系统
 选项说明如下:

 

 

选项 功能
-t 察看 dump 起来的备份文件中含有什么数据
-C

dump 内的数据跟实际的文件系统做比较,列出『在 dump 档案内有但与

目前文件系统不一样』的档案

-i 进入互动模式,可以仅还原部分档案,用在 dump 目录时的还原
-r

将整个 filesystem 还原,用在还原针对文件系统的 dump 备份

-h 察看备份数据中的 inode 与文件系统 label 等信息
-f 后面接要处理的那个 dump 档案
-D -C 搭配,后面接挂载点

默认restore会将备份文件解压到当前目录。进入互动模式后,add file 可以将 file 加入待解压档案列表中;delete file 可以将 file 移除出待解压档案列表;extract 会开始将刚刚选择的档案列表解压缩出去。

 

14.  要利用刻录机将数据刻录到 DVD 时, 要先将数据生成一个映像档,这样才能够写入DVD片中。而将数据生成像档的方式就是通过 mkisofs 这个指令:

 

mkisofs [-o 映像档] [-rv] [-m file] 待备份文件.. [-V vol] -graft-point isodir=systemdir  ...

 

选项说明如下:

 

选项 功能
-o 后面接想要产生的那个映像档档名
-r

通过 Rock Ridge 产生支持 Unix/Linux 的档案数据,可记录较多的信息

-v 显示生成 ISO 档案的过程
-m file

排除 (exclude) 后面档案(file)不生成到映像档中

-V vol 建立 Volume,有点像 Windows 在档案总管内看到的 CD title 的东西
-graft-point graft有转嫁或移植的意思,指定当前目录与映像档中目录的映射关系

 

光盘的格式一般称为 iso9660 ,这种格式一般仅支持旧版的 DOS 档名,亦即档名只能以 8.3 (文件名8个字符,扩展名3个字符) 的方式存在。如果加上 -r 的选项,那么档案信息能够被记录得比较完整,可包括UID/GID与权限等等。默认情况下,所有要被加到映像档中的档案都会被放置到映象文件中的根目录, 如可以使用 -graft-point 这个选项,以如下方式来定义位于映像文件中的目录:

映像文件中的目录所在=实际 Linux 文件系统的目录所在

 

15.  cdrecord 指令可以进行文字接口的刻录行为:

 

# cdrecord -scanbus dev=ATA <==查询刻录机位置
# cdrecord -v dev=ATA:x,y,z blank=[fast|all] <==擦除重复读写片
# cdrecord -v dev=ATA:x,y,z -format <==格式化DVD+RW
# cdrecord -v dev=ATA:x,y,z [可用选项功能] file.iso
 选项说明如下:

 

 

选项 功能
-scanbus 扫瞄磁盘总线并找出可用的刻录机,后续癿装置为 ATA 接口
-v cdrecord 运行过程中,显示过程
dev=ATA:x,y,z

后续的 x, y, z 为你系统上刻录机所在的位置,可通过-scanbus查询到。

blank=[fast|all] blank 为擦除可重复写入的CD/DVD-RW,使用fast较快,all较完整
-format 仅针对 DVD+RW 这种格式的 DVD
-data 指定后面的档案以数据格式写入,不是以 CD 音轨(-audio)方式写入
speed=X 指定刻录速度,例如CD可用 speed=40 为40倍速,DVD则可用 speed=4 之类
-eject 指定刻录完毕后自动退出光盘
fs=Ym 指定多少缓存可用在记录DVD的过程中。默认为 4m, 一般建议可增加到 8m
driveropts=burnfree 仅针对DVD,打开 Buffer Underrun Free 模式的写入功能
-sao 支持 DVD-RW 的格式

 

IDE 与 SATA 都能够使用 dev=ATA 这种模式来查询。

 

16.  dd 可以读取磁盘装置的内容(几乎是直接读取扇区"sector"),然后将整个装置备份成一个档案:

dd if="input_file" of="output_file" bs="block_size" count="number"

 if 是 input file,也可以是装置;of 是 output file,也可以是装置;bs 为规划的一个 block 的大小,若未指定则默认为 512 bytes(一个 sector 的大小);count 指定多少个 bstar 可以用来备份关键数据,而 dd 则可以用来备份整个 partition 或 整块 disk,因为它是硬件级别的复制,而不是文件系统级别的。(superblock,boot sector,metadata 的区块,使用 cptar 指令是无法备份的。)不过,要将数据填回到 filesystem 当中, 需要考虑到原本的 filesystem 才行。

 

17.  cpio 可以备份任何东西,包括装置设备档案。但 cpio 是流式指令,需要配合类似 find 等可以找到文件名的指令来告知 cpio 该被备份的数据在哪里:

# cpio -ovcB > [file|device] <==备份
# cpio -ivcdu < [file|device] <==还原
# cpio -ivct < [file|device] <==察看

选项说明如下:

 

 

选项 功能
-o 将数据 copy 输出到档案或装置上
-B 让默认的 Blocks 可以增加至 5120 bytes ,默认是 512 bytes。这样的好处是可以让大档案的储存速度加快。
-i

将数据从档案或装置 copy 到当前目录

-d 自动建立目录。使用 cpio 所备份的数据可能会在不同层的目录中,-d 选项可以cpio 在还原时可以建立新目录
-u 自动地将较新的档案覆盖较旧的档案
-t 需配合 -i 选顷,可用在"察看"以 cpio 建立的档案或装置的内容
-v 让储存的过程中文件名可以在屏幕上显示
-c 以一种较新的portable format 方式储存
fs=Ym 指定多少缓存可用在记录DVD的过程中。默认为 4m, 一般建议可增加到 8m
driveropts=burnfree 仅针对DVD,打开 Buffer Underrun Free 模式的写入功能
-sao 支持 DVD-RW 的格式

  • 大小: 7.1 KB
分享到:
评论

相关推荐

    05文件打包与解压缩.pdf

    其中文件打包与解压缩是基础的Linux命令操作技能,对于文件的备份、传输和存储有着重要的意义。文件打包是将多个文件或目录合并成一个单独的压缩包文件,而解压缩则是将压缩包还原成原先的文件或目录结构。本文将...

    我的Linux实验——第9章(文件与文件系统的压缩和打包)

    文章目录第9章(文件与文件系统的压缩和打包)1. Linux系统常见的压缩命令1.1 Compress1.1.1 压缩1.1.2 解压缩1.1.3 保留原文件压缩1.2 gzip,zcat1.2.1 压缩1.2.2 解压缩1.2.3 保留原文件压缩1.2.4 不解压缩查看...

    Linux操作系统学习

    第0章 计算机概论 第1章 Linux是什么 第2章 Linux 如何学习 ...第9章 档案与文件系统的压缩与打包 第10章 vim程序编辑器 第11章 认识与学习BASH 第12章 正规表示法与文件格式化处理 第13章 学习Shell Scripts ........

    第9章-文件的归档和压缩1

    第九章主要讲解了文件的归档和压缩技术,这对于管理和传输大量数据至关重要。在Linux操作系统中,常用的工具有tar、zip以及gzip、bzip2、xz等压缩工具。 首先,我们来看tar命令,它主要用于文件的归档和压缩。归档...

    java文件打包

    9. **依赖管理**:如果项目有外部依赖,如第三方库,那么打包时需要确保这些库被正确地包含。这可以通过在JAR文件中嵌入依赖,或者创建包含所有依赖的"fat"或"uber" JAR来实现。 10. **发布与部署**:打包完成后,...

    罗宾500例-第13章 文件与文件夹系统操作.rar

    10. **压缩与解压缩**:RAR是一种常见的文件压缩格式,可以减小文件占用的空间。使用像WinRAR这样的工具,用户可以将多个文件打包成一个RAR文件,并进行加密以保护隐私。 11. **版本控制**:对于开发者而言,版本...

    java文件压缩源码

    Java文件压缩源码是Java开发中常见的需求,它允许开发者将多个文件或目录打包成一个压缩文件,方便存储和传输。在本例中,我们提到的实现方式是通过使用Apache Ant库中的`org.apache.tools.ant.taskdefs.Zip`类。...

    鸟哥的私房菜.pdf

    第9章 文件与文件系统的压缩与打包 第三部分 学习shell与shell script 第10章 vim程序编辑器 第11章 认识与学习bash 第12章 正则表达式与文件格式化处理 第13章 学习shell script 第四部分 Linux使用者管理 ...

    鸟哥的Linux私房菜基础学习篇(第二版PDF)02

     第9章 文件的压缩与打包  第三部分 学习Shell和Shell脚本  第10章 vi文字处理器   第11章 认识Bash Shell   第12章 正则表达式   第13章 学习Shell脚本  第四部分 Linux用户管理  第14章 Linux...

    zip压缩解压缩

    综上所述,"zip压缩解压缩"不仅仅是简单的文件打包过程,它涉及到文件系统操作、压缩算法、C++编程技巧、安全性以及跨平台兼容等多个方面的知识。通过深入学习和实践,你可以掌握这一核心技术,为你的项目带来高效的...

    office文件压缩圣手

    10. **云存储与在线协作**:在当前云存储和在线协作的时代,文件压缩也有助于降低存储费用,比如在Google Drive、OneDrive或Dropbox等服务中,小文件上传和下载更快,且占用的存储空间更少。 综上所述,"Office文件...

    nodejs 复制和压缩文件

    在Node.js环境中,复制和压缩文件是常见的任务,特别是在构建自动化流程或打包应用程序时。`archiver`库是一个强大的工具,它允许我们方便地完成这些操作。本篇将深入讲解如何利用`nodejs`和`archiver`库来实现文件...

    JAVA文件压缩与解压缩实践(源代码+论文).rar

    Java文件压缩与解压缩是Java开发中的常见任务,特别是在数据传输、存储优化或者备份场景下。本实践项目提供了源代码和相关论文,帮助开发者深入理解并应用这一技术。以下是关于Java文件压缩与解压缩的一些核心知识点...

    使用MyEclipse将JAVA项目打包成JAR文件

    在Java开发过程中,将项目打包成JAR(Java Archive)文件是常见的操作,这有助于将源代码、资源文件和依赖库整合到一个可执行的独立文件中,方便分发和运行。MyEclipse作为一款强大的Java集成开发环境,提供了简单...

    最小linux文件系统

    这一步骤会把所有必要的文件打包进一个压缩的文件系统镜像中。 9. **启动加载器(Bootloader)**:如U-Boot或BusyBox的bootloader部分,负责加载内核和设备树到内存中,初始化硬件,并传递控制权给Linux内核。 10....

    windows图标文件打包

    5. **打包与分发**:将多个.ico文件打包在一起,通常是出于方便分享、备份或组织的目的。这可以通过常规的压缩工具,如WinRAR、7-Zip等实现。打包后的文件可以更轻松地通过电子邮件、云存储服务或在线平台进行传输。...

    新建 ZIP 压缩文件.zip

    在信息技术领域,ZIP 文件是一种常见的文件压缩格式,用于将多个文件或文件夹打包成一个单一的、更小的文件,便于存储、传输和分享。"新建 ZIP 压缩文件.zip" 指的是创建一个新的 ZIP 格式的压缩文件。在 Windows、...

    Linux操作系统实战(Ubuntu)-习题答案习题答案1-9章全章节习题参考答案.docx

    - **编程示例**:使用`tar`和`gzip`命令打包并压缩文件。 ```bash tar -cvf test.tar test gzip -v test.tar ``` #### 第五章:用户账户与权限管理 - **用户管理**:在Linux系统中,每个用户都有唯一的用户名...

    linux root 目录打包

    9. **opt**:存放非标准的或第三方的应用程序和软件包。 10. **proc**:虚拟文件系统,提供进程和系统信息。 11. **sbin**:包含系统管理员使用的命令,这些命令通常与系统维护有关。 12. **srv**:服务数据,如...

Global site tag (gtag.js) - Google Analytics