文件压缩有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。LINUX上有很多压缩解压缩软件,linux上目前最常用的压缩软件时gzip和bzip2,compress已经过时了,通常这些命令通常只能针对一个文件来压缩解压缩,如果要对目录和多个文件进行压缩,就需要用到归档工具来解决。
常见压缩命令:compress、gzip、bzip2、xz、zip
常用归档命令:tar、cpio
不同的压缩解压缩软件的压缩技术并不相同,这就造成了软件之间不能彼此解压缩或者压缩文件,所以需要根据被压缩文件的扩展名判断该文件使用的压缩软件。
常见压缩文件扩展名对应的命令:
扩展名 | 压缩命令 | 解压命令 |
---|---|---|
*.z | commpress | uncompress |
*.gz | gzip | gunzip |
*.bz2 | bzip2 | bunzip2 |
*.xz | xz | unxz |
*.zip | zip | unzip |
*.tar.gz/*.tgz | tar-gzip | tar-gunzip |
*.tar.bz2/*.tbz2 | tar-bzip2 | tar-bunzip2 |
*.tar.xz/*.txz | tar-xz | tar-unxz |
*.tar(归档) | tar | tar |
*.cpio(归档) | cpio | cpio |
常用压缩软件
cmpress|uncompress|zcat
compress [-dfvcVr] [-b maxbits] [file ...]
-d: 解压缩,相当于uncompress
-c: 结果输出至标准输出, 不删除原文件
-v: 显示详情
uncompress 解压缩
zcat file.Z >file 不解压缩查看文件内容
例如:
uncompress FileName.Z (解压缩)
compress FileName(压缩)
gzip|gunzip|zcat
gzip [OPTION]... FILE ...
-d: 解压缩,相当于gunzip
-c: 将压缩或解压缩的结果输出至标准输出
-# :1-9 ,指定压缩比,值越大压缩比越大
zcat 不解压缩查看文件内容
例如:
gunzip FileName.gz|gzip -d FileName.gz(解压缩)
gzip FileName(压缩)
bzip2|bunzip2|bzcat
-d: 解压缩,相当于bunzip2
-# :1-9 ,指定压缩比,值越大压缩比越大
-k keep 保留源文件
bzcat:不解压缩查看文件内容
例如:
bzip2 -d FileName.bz2|bunzip2 FileName.bz2(解压缩)
bzip2 -z FileName(压缩)
xz/unxz/xzcat
-d: 解压缩,相当于gunzip
-# :1-9 ,指定压缩比,值越大压缩比越大
-k keep 保留源文件
xzcat:不解压缩查看文件内容
zip/unzip
-A 调整可执行的自动解压缩文件。
-b<工作目录> 指定暂时存放文件的目录。
-c 替每个被压缩的文件加上注释。
-d 从压缩文件内删除指定的文件。
-D 压缩文件内不建立目录名称。
-f 更新或者追加文件内容到压缩文件
-F 尝试修复已损坏的压缩文件。
-g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-h 在线帮助。
-i<范本样式> 只压缩符合条件的文件。
-j 只保存文件名称及其内容,而不存放任何目录名称。
-J 删除压缩文件前面不必要的数据。
-k 使 用MS-DOS兼容格 式的文件名称。
-l 压缩文件时,把LF字符 置换成LF+CR字 符。
-ll 压缩文件时,把LF+CR字 符置换成LF字符。
-L 显示版权信息。
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-n<字尾字符串> 不压缩具有特定字尾字符串的文件。
-o 将压缩文件的更改时间设成和该文件相同(参照压缩包内最新文件)
-q 不显示指令执行过程。
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
-S 包含系统和隐藏文件。
-t<日期时间>把压缩文件的日期设成指定的日期。
-T 检查备份文件内的每个文件是否正确无误。
-u 更换较新的文件到压缩文件内。
-v 显 示指令执行过程或显示版本信息。
-V 保 存VMS操作系统的文件属性。
-w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
-x<范本样式> 压 缩时排除符合条件的文件。
-X 不保存额外的文件属性。
-y 直接保存符号连接,而非该连接所指向的文件
-z 在压缩文件加上注释。
-$ 保存第一个被压缩文件所在磁盘的卷册名称。
-<压缩效率> 压 缩效率是一个介于1-9的数值。
例如:
unzip test.zip(解压缩)
zip test1.zip test.MYI(压缩)
常用归档工具
tar归档工具
tar [主选项+辅选项] 文件或者目录(主选项是必须要有的,辅选项可以选用)
主选项:(同一条命令只能使用一个主选项)
c 创建新的档案文件。备份一个目录或是一些文件,相当于打包。
x 从档案文件中释放文件。相当于拆包。
t 列出档案文件的内容,查看已经备份了哪些文件。
辅助选项:
-z :调用gzip命令压缩
-j :调用bzip2命令压缩
-v :压缩的过程中显示文件!这个常用
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加其他参数!
-p :使用原文件的原来属性(属性不会依据使用者而变)
--exclude FILE:在压缩的过程中,不要将 FILE 打包!
示例:
tar -tf aaa.tar.gz 在不解压的情况下查看压缩包的内容
压缩
tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg
tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个
gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个
bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成
一个umcompress压缩过的包,命名为jpg.tar.Z
解压
tar –xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压
tar.bz2tar –xZvf file.tar.Z //解压tar.Z
cpio归档工具
cpio可将文件或目录从文件库获取出来或将散列文件拷贝到文件库。是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio” 或者“.tar” 结尾的文件。
cpio 共有三种基本模式:
-o即copy-out 模式,将一组文件copy到一个文件库。
-i 即copy-in 模式,读取文件库,并将其展开在当前目录。
-p 能从某个目录读取所有文件(包括子目录到另一个目录),且不以归档的方式存放。
-o常用标准输入设备读取要copy 的文件名称,并将copy成的归档文件通过标准输出设备输出,一般利用输入/输出重定向或管道的原理,达到真正复制的功能。
cpio [ 选项] > 文件名或者设备名
cpio [ 选项] < 文件名或者设备名
选项
-o 将文件拷贝打包成文件或者将文件输出到设备上
-i 解包,将打包文件解压或将设备上的备份还原到系统
-t 预览,查看文件内容或者输出到设备上的文件内容
-v 显示打包过程中的文件名称。
-d 解包生成目录,在cpio 还原时,自动的建立目录
-c 一种较新的存储方式
示例:
**利用cpio备份: **
find temo –print | cpio –ocdv > /dev/rfd0135ds18
find . |cpio -co > ../initrd(将temp目录下的文件备份到软盘上)
ls |cpio –o >/usr/backup(将当前目录下的所有文件复制成backup archive file)
ls *.c | cpio –o>backup(复制工作目录中的所有的c程序)
ls| cpio –p /usr/linfs/tempdir (复制当前工作目录下的文件到/usr/linfs/tempdir 目录,不生成archive file)
利用cpio 复原:
cpio –icdv < /dev/rfd0135ds18 (将软盘中的文件复原。)
cpio -i < ../initrd(将上层目录的initrd文件释放到当前文件夹)
cpio –icdv "*stat.wp" < /dev/rfd0135ds18 (仅复原*stat.wp的文件 )
cpio –i </usr/linfs/old1 *.f (仅复原*.f 文件)