`
leonzhx
  • 浏览: 769020 次
  • 性别: 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
分享到:
评论

相关推荐

    鸟哥的 Linux 私房菜第09章-档案与文件系统的压缩与打包1

    第九章、档案与文件系统的压缩与打包最近更新日期:2008/12/18在 Linux 底下有相当多的压缩指令可以运作喔!这些压缩指令可以让我们更方便从网络上面下载

    第九章 文件的归档和压缩.pdf

    归档和压缩文件 归档和压缩文件的好处:节约硬盘的资源 ,加快文件传输速率。 tar 命令 作用:打包、压缩文件,

    我的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 ........

    鸟哥的私房菜.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...

    rar压缩软件.rar

    2) 把当前目录和子目录的所有文件压缩为 362000 字节大小、固实的、 自解压分卷压缩文件并对没个卷添加恢复记录: rar a -r -v362 -s -sfx -rr save 因为尾指定文件名,假设为所有文件 (*)。 3) 作为一个特别...

    linux入门教程

    第十章 文档的压缩与打包 第十一章 安装RPM包或者安装源码包 第十二章 学习shell脚本之前的基础知识 第十三章 正则表达式 第十四章 SHELL 脚本 第十五章 linux系统日常管理 第十六章 LAMP环境搭建 第十七章 LNMP环境...

    中文简体压缩软件RAR 6.0

    更新打包到压缩文件后被改变的文件。这个命令不 向压缩文件中添加新文件。 i[i|c|h|t]=&lt;字符串&gt; 在压缩文件中查找字符串。 支持下列可选参数: i - 不区分大小写(默认); c - 区分大小写搜索; ...

    史上超高压缩软件2009

    压缩技术,因此压缩率极高,几乎可以排到世界第一位,尤其是多文件压缩!唯一的缺点 是压缩速度比其他格式较慢.后面给出各个常用的压缩工具压缩单文件和多文件的结果. ----------------------------------------------...

    边干边学Linux__第二版_doc格式

    5.6 压缩文件、解压缩文件与打包文件 5.7 RPM包管理 第6章 Linux进程、管道和重定向 6.1 进程的属性 6.2 进程的终止 6.3 进程和作业控制 6.4 命令行中使用操作符 6.5 Linux系统启动和进程层次结构 6.6 系统启动和...

    Linux9章1

    第九章 文件和文件系统的压缩和打包1、压缩原理:目前计算机系统都是用 bytes 为单位计算的,数字 1 以 0000 0001 记录。压缩就是丢弃那 7 个空

    C#开发实战宝典.(清华出版.王小科等).part1

    因文件较大,全书压缩打包成2部分,这是第1部分。 内容简介  全书共分30章,主要内容包括初探C#及其开发环境,认识C#代码结构,C#程序设计基础,选择结构控制,循环结构控制,字符及字符串,数组、集合与哈希表,...

    C#开发实战宝典.(清华出版.王小科等).part2

    因文件较大,全书压缩打包成2部分,这是第2部分。 内容简介  全书共分30章,主要内容包括初探C#及其开发环境,认识C#代码结构,C#程序设计基础,选择结构控制,循环结构控制,字符及字符串,数组、集合与哈希表,...

    MoleBox9x(可执行文件打包工具)V2.7.0.3682汉化绿色特别版

    MoleBox9x 就是 MoleBox 的最新升级版,MoleBox9x 是一个 Windows 应用程序的运行时可执行文件打包工具。它可以将一个应用程序及其需要的所有数据文件打包为一个可执行文件。MoleBox 也允许你用一套数据包创建一个可...

    CentOS.5系统管理-part1

    第9章 文件系统管理 9.1 Linux文件系统概述 9.1.1 什么是文件系统 9.1.2 文件系统布局 9.1.3 几个重要的文件系统 9.1.4 几个特殊的文件系统 9.1.5 主流的日志文件系统 9.1.6 其他类型的文件系统 9.1.7 非日志文件...

    Linux-基础篇.rar

    第一章:如何学习Linux 第二章:主机规划与磁盘分区 第三章:安装centOS 第四章:首次登入与在线求助 第五章:Linux的文件权限与目录...第八章:文件与文件系统的压缩,打包与备份 第九章:vim程序编辑器 ..........

    linux操作系统命令大全

    第九章:进程管理  Linux是一个多用户多工的操作系统。多用户是指多个用户可以在同一时间使用电脑系统;多工是指Linux可以同时执行多个任务,它可以在还未执行完一个任务时又执行另一项任务。  操作系统管理...

    UNIX教程网络篇(打包)

    第9章 TCP/IP网络互联技术 129 9.1 TCP/IP协议 129 9.2 域名 130 9.3 Internet和Intranet 131 9.4 TCP/IP地址 132 9.5 TCP/IP网络地址 133 9.6 TCP/IP 配置文件 134 9.6.1 标识主机名文件:/etc/hosts 134 9.6.2 ...

Global site tag (gtag.js) - Google Analytics