压缩技术一般分为两种:有损压缩和无损压缩。在linux中一般不允许有数据丢死,所以都是无损压缩。
linux中压缩技术一般可以分为两种:
- gzip
- bzip2
gzip
gzip是先于bzip2出现的压缩技术,一般的使用方法如下:
gzip file
file是需要压缩的文件,生成的压缩文件一般会替换原始的文件,压缩文件和原始的文件具有相同的时间属性和权限。
如果想要保留原始的文件,那么可以使用c选项和重定向实现。
gzip -cv file > file.gz
c是将输出定位到标准输出,v是显示压缩过程中的详细信息。
gzip对应的解压缩命令:(目前 gzip 可以解开 compress, zip 与 gzip 等软件所压缩的文件)
gzip -d file.gz (或者使用gunzip命令)
可以使用zcat(参考cat)来直接查看纯文本压缩文件的内容。
bzip2
bzip2是对gzip技术的一种改进,一般具有较好的压缩比,但是速度比较慢。bzip2的使用方式和gzip类似。
不同点:
bunzip2对应的解压缩命令是bunzip2(一般使用bzip2 -d来进行解压缩)
使用bzcat可以查看.bz2文件的内容。
缺点:这些压缩命令通常仅能针对一个文件来压缩与解压缩,虽然 gzip 与 bzip2 也能够针对目录来进行压缩,不过,这两个命令对目录的压缩指的是将目录内的所有文件 "分别" 进行压缩!因此,打包文件显得很有必要。
tar
打包就是把许多文件捆绑成一个大文件的过程,打包文件使用tar命令。tar命令的一般使用方法如下:
打包文件:tar -cv -f filename.tar filename1 filename2 (c选项表示创建打包文件,f指定打包之后生成的文件名,v显示打包的文件信息)
解包文件:tar -xv -f filename.tar (x表示解包打包的文件,f指定打包文件名)
查看打包文件包含的文件 :tar -t -f filename.tar (-t显示打包文件中的文件名)
tar具有以下两个特点:
- 从打包文件恢复的文件的权限是执行恢复操作的用户的权限,除非你是root用户,此时权限是原始用户的权限。
- tar 命令特点是它处理归档文件路径名的方式。默认情况下,路径名是相对的,而不是绝对路径。当创建归档文件的时候,tar 命令会简单地删除路径名开头的斜杠。
find playground -name 'file-A' -exec tar rf playground.tar '{}' '+' //r是追加选项
linux中相关的文件名约定:
*.Z compress 程序压缩的文件;
*.gz gzip 程序压缩的文件;
*.bz2 bzip2 程序压缩的文件;
*.tar tar 程序打包的数据,并没有压缩过;
*.tar.gz tar 程序打包的文件,其中并且经过 gzip 的压缩
*.tar.bz2 tar 程序打包的文件,其中并且经过 bzip2 的压缩
另外,tar 打包出来的文件有没有进行压缩所得到文件称呼不同。
- tarfile:打包文件 tar -cv -f file.tar
- tarball:打包并压缩文件 tar -jcv -f file.tar.bz2