文章目录

  • 文件与文件系统的压缩
  • Linux系统常见的压缩命令
  • gzip,zcat/zmore/zless/zgrep
  • bzip2,bzcat/bzmore/bzless/bzgrep
  • xz,xzcat/xzmore/xzless/xzgrep
  • 打包命令tar
  • XFS系统的备份和还原
  • XFS文件备份之xfsdump
  • xfsdump使用的限制
  • xfsdump命令语法
  • XFS文件系统还原之xfsrestore
  • xfsrestore命令语法
  • 光盘写入工具
  • mkisofs:建立镜像文件
  • cdrecord:光盘刻录工具
  • 其他压缩和备份工具
  • dd命令
  • cpio命令


文件与文件系统的压缩

在磁盘中的文件总是存在着各种浪费空间的问题,为了节省磁盘空间,充分利用空间,于是出现了压缩技术,将大文件压缩一部分,使得更高效的利用磁盘空间,也更便于文件的传输。(如我们在网站上看到的数据,都是传输压缩过的数据,等压缩过的数据到达我们的计算机主机时,再解压缩,最终呈现在我们面前)

Linux系统常见的压缩命令

Linux系统支持的压缩命令非常多,各种压缩技术所使用的技术不同,不同通用,所有压缩文件通常都有扩展名,避免混淆。

压缩比概念:压缩比指的是压缩前的文件与压缩后的文件所占磁盘容量之比,比值越高,压缩程度越好。

gzip,zcat/zmore/zless/zgrep
  • gzip命令使用zip程序来压缩文件,同样也可以解开compress、zip、gzip软件所压缩的程序

gzip命令语法:

gzip [-cdtv#] 文件名.gz

-d: 解压缩的参数

-#:#为数字,代表压缩等级,-1最快,压缩比最差,-9最慢,压缩比最好

-c:将压缩的数据输出到屏幕上,可通过数据流重定向来处理

-v:显示压缩比等信息

  • zcat/zmore/zless/zgrep
    cat/more/less/grep可以读取纯文本文件,而zcat/zmore/zless/zgrep可以直接读取纯文本文件压缩后的压缩文件
  • 注意的是,使用gzip命令时,源文件会被压缩成.gz后缀的文件,源文件不再存在。
bzip2,bzcat/bzmore/bzless/bzgrep
  • bzip2命令使用bzip2程序来压缩或解压文件

bzip2命令语法:

-d:解压缩的参数

-#:#为数字,代表压缩等级,-1最快,压缩比最差,-9最慢,压缩比最好

-c:将压缩的数据输出到屏幕上,可通过数据流重定向来处理

-v:显示压缩比等信息

-k:保留原始文件,不会删除原始文件

  • bzcat等 的作用与zcat等 相同
xz,xzcat/xzmore/xzless/xzgrep
  • xz命令使用xz程序来压缩或解压文件

xz命令语法:

-d:解压缩的参数

-#:#为数字,代表压缩等级,-1最快,压缩比最差,-9最慢,压缩比最好

-c:将压缩的数据输出到屏幕上,可通过数据流重定向来处理

-v:显示压缩比等信息

-k:保留原始文件,不会删除原始文件

  • 同样,xzcat/xzmore/xzless/xzgrep作用同上
  • 上述三个命令中,gzip、bzip2、xz压缩程度依次递增,但所耗时间也依次递增。

打包命令tar

前面提到的压缩命令都是只能对文件进行压缩(对目录压缩即是对目录内的所有文件分别进行压缩),而要形成类似于windows中的压缩包的大文件,就需要使用打包命令tar,将压缩过的文件打包成一个大文件。

常用的tar命令语法:

  • 打包和压缩:
    tar [-z|-j|-J] [cv] [-f 将建立的新文件名] [–exclude=目录中压缩时被排除在外的文件] 被打包压缩的文件/目录名
  • 查看文件名:
    tar [-z|-j|-J] [tv] [-f tar文件名]
  • 解压缩:
    tar [-z|-j|-J] [xv] [-f tar文件名] [-C 目录名] #-C指定解压文件至某一目录
  • 各参数意义:
    -c:建立打包文件
    -t:查看打包文件中含有哪些文件名
    -x:解压缩
    -z:通过gzip的支持进行压缩和解压缩
    -j:通过bzip2的支持进行压缩或解压缩
    -J:通过xz的支持进行压缩或解压缩
    -f:-f后要跟被处理的文件名(最好将该参数独立出来,-jvfc 中c并不是文件名,会导致错误;最好写成-jvc -f)
    -p:保留备份数据原本的权限和属性

注意:**打包压缩后的目录中的文件名,都不含根目录。**这样做的目的是为了安全,避免在解压缩后文件覆盖系统中原有的文件。

  • tarfile与tarball之别
    如果tar打包了文件,但没有进行压缩,那么这个文件我们就称为tarfile。
    如果打包且进行了压缩,就称为tarball。

XFS系统的备份和还原

tar通常是针对目录树系统进行备份,而要对xfs文件系统进行备份与还原就需要使用xfsdumpxfsrestore命令。

XFS文件备份之xfsdump

xfsdump可以对xfs文件系统进行完整备份,此外还可以进行增量备份(增量备份即备份系统在第一次备份后新增的文件)

xfsdump使用的限制
  • xfsdump只能备份已挂载的文件系统
  • xfsdump必须使用root权限才能使用
  • xfsdump只能备份文件系统
  • xfsdump备份下来的数据只能由xfsrestore进行解析
  • xfsdump是通过各文件系统的UUID来辨别各备份文件的
xfsdump命令语法
xfsdump [-L S_label] [-M M_label] [-l #] [-f 备份文件] 待备份的数据
参数意义:
-L:xfsdump会记录每次备份的session标头
-M:xfsdump会记录存储媒介的标头
-l:指定备份的等级,0-9(0即是完整备份)
-I:从/var/lib/xfsdump/inventory列出目前备份的信息状态
XFS文件系统还原之xfsrestore
xfsrestore命令语法
xfsrestore [-f 备份文件] [-L S_label] [-s] 待恢复目录  # 单一文件全恢复
xfsrestore [-f 备份文件] -r 待恢复目录  # 通过增量备份来恢复系统
xfsrestore [-f 备份文件] -i 待恢复目录  # 进入交互模式
参数:
-I:查询备份数据
-f:后接备份文件
-s:接指定目录,仅恢复某一个文件或目录
-i:进入交互模式

另:differ -r 目录1 目录2 # 比较量目录内的文件差异

光盘写入工具

mkisofs:建立镜像文件

《鸟哥私房菜》277

cdrecord:光盘刻录工具

阅读有些迷糊,等待遇到实际问题时,再来理解使用。

其他压缩和备份工具

dd命令

dd命令可以用来创建大文件,同样也可以用来备份。

但注意的是,默认dd命令在备份的时候是一个扇区一个扇区去读写的,甚至没有用到的扇区也会被写入备份文件中,此外,连通superblock、启动扇区、元数据等也会被复制过来,所以使用dd的命令得到的备份文件跟原来的磁盘是一模一样的。

cpio命令

cpio命令可以备份任何东西,包括设备文件。