Linux文件打包与解压缩
压缩打包程序
使用zip打包文件夹
-
使用
zip
命令可以将文件夹打包,比如使用下面的命令将目录/home/shiyanlou/Desktop
打包成一个文件,并查看打包后文件的大小和类型,其中-r
参数表示递归打包包含子目录的全部内容,-q
参数表示为安静模式,即不输出信息到屏幕,-o
表示输出文件,在后面紧跟上输出的文件名称:1
2
3
4cd ~
zip -r -q -o shiyanlou.zip /home/shiyanlou/Desktop
du -h shiyanlou.zip
file shiyanlou.zip -
为打包设置压缩级别(9:最高压缩度,速度最慢;1:最快速度,压缩率低),进行重新打包:
1
2zip -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 -
使用
du
命令再次查看压缩得到的文件,其中-h
为以人可读的形式展现,-d
表示查看文件的深度:1
du -h -d 0 *.zip ~ | sort
-
注意:压缩文件使用的路径只能使用绝对路径,否则不起作用。理论上默认压缩级别是最高的,但在文件较小时难以看出差别。
-
由于WIndows和Linux/Unix在文本处理格式上存在差异,比如换行符,WIndows上为
CR+LF
,但Linux/Unix上为LF
,所以一些在Linux/Unix上的换行在Windows系统上看起来像是没有换行,为了解决此类问题,还需要在命令中做出一些修改,加上-l
参数将LF
转换为CR+LF
达到上述目的:1
zip -r -l -o shiyanlou.zip /home/shiyanlou/Desktop
创建加密zip包
-
在打包文件时添加上
-e
参数可以创建加密压缩包:1
zip -r -e -o shiyanlou_encryption.zip /home/shiyanlou/Desktop
解压缩打包程序
解压缩文件
-
将之前打包的
shiyanlou.zip
解压到当前目录下:1
unzip shiyanlou.zip
-
与之前相同,使用
-q
参数使用安静模式解压文件,而使用-d
参数指定解压目录:1
unzip -q shiyanlou.zip -d ziptest
-
如果上面指定的目录不存在,则会直接创建。
-
如果只想查看压缩包的内容,而不进行解压操作,可以使用
-l
参数:1
unzip -l shiyanlou.zip
解决解压乱码问题
-
通常在Windows系统上创建的压缩文件,如果包名中含有中文的目录或者以中文作为文件名命名的文件,通常会采用GBK编码,而Linux则是默认使用哪个UTF-8编码,如果不加以处理直接解压,则会出现乱码问题,可以在解压缩时使用
-O
参数指定文件编码:1
unzip -O GBK 压缩文件.zip
tar打包工具
打包
-
比起
zip
,在Lin上更常使用的是tar
工具,tar
可以将7z、gzip、xz、bzip2等格式进行打包或者解包,仅仅是参数不同,比起zip
使用较为方便。 -
创建一个tar包,使用
-P
参数保留绝对路径符,-c
表示创建一个tar包文件,-f
用于指定创建的文件名,其后紧跟文件名称,如果加上-v
参数,那么会以可视的形式输出打包的文件:1
2cd ~
tar -P -cf shiyanlou.tar /home/shiyanlou/Desktop在使用多个参数时,可以使用连续书写方式:如同时使用
-c
与-f
参数 ,则可以写成-cf
解包
-
同样是使用
tar
命令,加上-x
参数则是对文件进行解包,-C
参数指定解压到的目标文件夹:1
2mkdir tardir
tar -xf shiyanlou.tar -C tardir -
只查看而不解压文件使用
-t
参数:1
tar -tf shiyanlou.tar
-
如果需要在解压时保留文件的属性和跟随链接(符号链接或软连接)可以使用
-p
参数和-h
参数:1
tar -cphf etc.tar /etc
创建其他形式的打包程序
压缩文件格式 | 参数 |
---|---|
*.tar.gz |
-z |
*.tar.xz |
-J |
*tar.bz2 |
-j |
-
比如创建
.tar.gz
文件,加上-z
参数:1
tar -czf shiyanlou.tar.gz /home/shiyanlou/Desktop
-
解压
.tar.gz
文件:1
tar -xzf shiyanlou.tar.gz
实战训练
创建一个名为 test 的文件,分别用 zip 和 tar 打包成压缩包,再解压到 /home/shiyanlou 目录。
-
创建一个名为 test 的文件:
1
2cd ~
touch test -
分别用 zip 和 tar 打包成压缩包:
1
2
3zip -q -o test.zip test
tar -P -cf test.tar test
ls -
再解压到 /home/shiyanlou 目录:
1
2
3cd ~
unzip test.zip
tar -xf test.tar