zip
使用zip 打包
$ cd /home/shiyanlou
$ zip -r -q -o shiyanlou.zip /home/shiyanlou/Desktop
-r 参数表示递归打包包含子目录的全部内容, -q 参数表示为安静模式,即不向屏幕输出信息, -o,表示输出文件,需在其后紧跟打包输出文件名。
我们还可以设置压缩级别为 9 和 1:1 表示最快压缩但体积大,9 表示体积最小但耗时最久。
如果打包某个目录想要排除目录内的某些文件进行打包,可以使用 -x
:
-x 后面的命令即表示,打包时
$ zip -r -9 -q -o shiyanlou_9.zip /home/shiyanlou/Desktop -x ~/*.zip
$ zip -r -1 -q -o shiyanlou_1.zip /home/shiyanlou/Desktop -x ~/*.zip
注意⚠️:使用zip 打包必须使用绝对路径。
另外可以通过 du
查看压缩级别、最低、最高压缩级别及未压缩的文件的大小:
其中-h 表示将文件大小转换为人可读的形式,-d 表示查看文件的深度。
加密zip
可以使用 -e
实现加密。
$ zip -r -e -o shiyanlou_encryption.zip /home/shiyanlou/Desktop
之后便需要我们输入文件加密的密码。
文本显示
由于换行符(为不可见字符),在 Windows 为 CR+LF(Carriage-Return+Line-Feed:回车加换行),而在 Linux/Unix 上为 LF(换行)。因此在linux 编辑的文本,在windows 显示会是没有换行的。
我们可以利用zip 使zip 压缩后的文件在win 上解压后不会存在换行的问题:
$ zip -r -l -o shiyanlou.zip /home/shiyanlou/Desktop
解压
使用 unzip
对文件解压。
可以直接在当前目录解压,或指定某个目录,如果目录不存在,则会创建。
$ unzip -q shiyanlou.zip -d ziptest
中文解压
通常 Windows 系统上面创建的压缩文件,如果有有包含中文的文档或以中文作为文件名的文件时默认会采用 GBK 或其它编码,而 Linux 上面默认使用的是 UTF-8 编码,如果不加任何处理,直接解压的话可能会出现中文乱码的问题(有时候它会自动帮你处理),为了解决这个问题,我们可以在解压时指定编码类型。
使用 -O
选项,指定解压编码类型。
unzip -O GBK 中文文件.zip
tar
打包
只是将文件进行打包,但不进行压缩。tar -cf something.tar something
-c 建立备份
-C 指定解压后的目录
-f 指定压缩后创建的文件名
-v 可视化输出打包的文件
压缩
-x 解压缩
-t 只查看压缩包内容
# 文件的压缩
-z gz 压缩
-j bz2 压缩
-J xz 压缩
# 以gz 形式压缩
$ tar -zcvf read.tar.gz readme.txt
# 解压到work 目录
$ tar -zxvf read.tar.gz -C work
其他命令
-h # 备份链接指向的源文件而不是链接本身
-p # 保留文件的属性
-P # 保留绝对路径符
gz
参考:http://c.biancheng.net/view/783.html
gzip 是 Linux 系统中经常用来对文件进行压缩和解压缩的命令,通过此命令压缩得到的新文件,其扩展名通常标记为“.gz”。
默认下gzip 会压缩后原文件会消失,需要指定-c 参数:
[root@localhost ~]# gzip install.log
#压缩instal.log 文件
[root@localhost ~]# ls
anaconda-ks.cfg install.log.gz install.log.syslog
#压缩文件生成,源文件消失
gzip 并不会像tar 或zip 一样打包目录,而是会递归的压缩目录下的所有文件。