本文旨在学习打包,压缩,解压缩。学习使用tar、gzip/gunzip/zcat、bzip2/bunzip2/bzcat、xz/unxz/xzcat、zip/unzip、cpio等命令的使用。
前言:
首先要弄清两个概念:打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)
tar命令详解
语法:tar[选项][参数]
常用选项:
-z或--gzip或--ungzip:通过gzip指令处理备份文件;
-j:通过bzip2指令处理备份文件;
-c或--create:建立新的备份文件;
-v:显示操作过程;
-f<备份文件>或--file=<备份文件>:指定备份文件;
-x或--extract或--get:从备份文件中还原文件;解压缩
-t或--list:列出备份文件的内容
-C <目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项
--exclude=<范本样式>:排除符合范本样式的文件。
通过bzip2令处理备份文件
打包: tar -cf log.tar access.log error.log (要打包的文件)
压缩: tar -jcvf log.tar.bz2 log.tar
打包后压缩: tar -jcvf log.tar.bz2 access.log error.log(要压缩的文件)
查询文件内容: tar -tf log.tar.bz2
解压缩: tar -jxvf log.tar.bz2 -C /backup/ (欲解压缩的目录)
通过gzip指令处理备份文件
压 缩:tar -zcvf log.tar.gz 要被压缩的文件或目录名称
查 询:tar -ztvf log.tar.gz
解压缩:tar -zxvf log.tar.gz -C 欲解压缩的目录
实例:
tar -zcvf etc.tar.gz /etc/*
tar -zcvf etc.tar.gz --exclud=/etc/services /etc/*
tar -zxvf etc.tar.gz -C /tmp/etcbak
gzip/gunzip/zcat命令
gzip常用选项:
-c: 将压缩或解压缩的结果输出至标准输出
-d: 解压缩,相当于gunzip
-r或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-#:1-9,指定压缩比,值越大压缩比越大
压缩tar打包的文件:
gzip -r log.tar 压缩后的文件名为log.tar.gz
压缩1: gzip access.log (压缩完后,源文件消失)
压缩2: gzip -c access.log >access.log.gz (压缩后保留源文件)
解压1:gzip -d access.gz (解压后,压缩包消失)
解压2:gzip -c -d access.log.gz >access.log(解压后保留压缩包)
解压3:gunzip access.gz
zcat命令用于不真正解压缩文件,就能显示压缩包中文件的内容的场合。
具体使用请google
zcat access.log.gz >access.log
bzip2/bunzip2/bzcat命令
bzip2 [OPTION]... FILE ...
-k: keep, 保留原文件
-d:解压缩
-#:1-9 ,压缩比,默认为6
bzcat :不显式解压缩的前提下查看文本文件内容;
xz/unxz/xzcat命令
xz是一种新的压缩文件格式,号称压缩率之王。采用LZMA SDK压缩,目标文件较gzip压缩文件(.gz或.tgz)小30%,较2小15%。
xz [OPTION]... FILE ...
-k: keep, 保留原文件;
-d:解压缩
-#:1-9 ,压缩比,默认为6
xzcat: 不显式解压缩的前提下查看文本文件内容
zip/unzip命令
打包压缩:zip filename.zip filename
解压缩:unzip filename.zip
cpio 命令
cpio命令主要是用来建立或者还原备份档的工具程序,cpio命令可以复制文件到归档包中,或者从归档包中复制文件。它可以解压以“.cpio” “.tar” 结尾的文件。
cpio语法:
cpio [option] > 文件名或者设备名
cpio [option] < 文件名或者设备名
常用option:
-o或--create:执行copy-out模式,建立备份档;
-i或--extract:执行copy-in模式,还原备份档;
-t或--list:将输入的内容呈现出来;
-u或:置换所有文件,不论日期时间的新旧与否,皆不予询问而直接覆盖;
-v或--verbose:详细显示指令的执行过程;
-d或--make-directories:如有需要cpio会自行建立目录;
-c:一种较新的存储方式
-B: 将输入/输出的区块大小改成5210Bytes;
实例:
[[email protected] tmp]# ls access.log error.log |cpio -ocvB >log.cpio access.log error.log 2 blocks
将/etc下的所有普通文件都备份到/opt/etc.cpio
find /etc –type f | cpio –ocvB >/opt/etc.cpio find /etc –type f | cpio –ov >/opt/etc.cpio
内容预览:
cpio -tv < etc.cpio
解压缩:
cpio -iv < etc.cpio
cpio -ivd < etc.cpio
rpmcpio命令:
rpm2cpio命令用于将rpm软件包转换为cpio格式的文件
rpm2cpio tree-1.6.0-10.el7.x86_64.rpm |cpio -idv