在日常工作中,把文件打包是常见的操作。在Linux服务器管理中,把文件打包备份也是必要的维护步骤。
1. tar
tar是最常见的打包命令,下面命令可以把foo目录打包后以gzip格式压缩:
tar -czvf foo.tar.gz foo
如果想以高一点的压缩率压缩成bzip2文件,可以用下面命令:
tar -cjvf foo.tar.bz2 foo
如果希望压缩率再高一些,可以用下面命令压缩成xz格式(注意J参数是大些的):
tar -cJvf foo.tar.xz foo
如果我们要打包一个很大的目录,使用压缩会明显降低速度,如果我们不太在意硬盘空间,而更在意完成打包这件事的时间,那么可以不加压缩参数,例如:
tar cvf foo.tar foo
为了兼容旧系统,tar命令的参数允许没有减号前缀,例如解压一个文件包可以写成:
tar xzvf foo.tar.gz
2. gzip
gzip的语法很简单,下面命令会生成一个foo.gz文件
gzip foo
下面2条命令都可以达到同样的解压目的:
gzip -d foo.gz
gunzip foo.gz
3. bzip2
bzip2的用法和gzip是一致的,以下是几个例子:
bzip2 foo
bzip2 -d foo.bz2
bunzip2 foo.bz2
4. zip, unzip
zip命令可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。国内Windows用户比较常用rar来压缩,然而rar不是自由软件,外国不算很普及。而zip则是Mac和Linux系统自带的。笔者曾经在一家外企电信企业工作的时候遇到过这样的情况,国内的员工用rar打包文件发给国外的同事,国外的同事就抱怨解压不了rar格式。在国内,我们可能很奇怪,装个winrar软件不就行了吗?一方面,别人不用盗版(winrar是收费软件);另一方面,Linux上解压rar确实不太方便。
下面命令将/home/test/html/这个目录下所有文件和文件夹打包为当前目录下的html.zip,其中参数r表示压缩目录,参数9表示以最高压缩比压缩。
zip -r9 html.zip /home/test/html
unzip命令用于解压缩由zip命令压缩的“.zip”压缩包。
以下是几条命令实例:
- 将压缩文件text.zip在当前目录下解压缩
unzip test.zip
- 将压缩文件text.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令不覆盖原先的文件
unzip -n test.zip -d /tmp
- 将压缩文件test.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令覆盖原先的文件
unzip -o test.zip -d tmp/
5. LPI考纲描述
3.1 Archiving Files on the Command Line
Weight: 2
Description: Archiving files in the user home directory.
Key Knowledge Areas:
- Files, directories
- Archives, compression
Terms and Utilities:
- tar
- Common tar options
- gzip, bzip2
- zip, unzip
评论