Linux文件打包

Posted 香饼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux文件打包相关的知识,希望对你有一定的参考价值。

一、文件打包、压缩与解压

linux常见的打包工具莫过于zip,gzip,bzip2,tar。我们可以根据需要的打包格式相对应的使用。

1、zip命令(.zip文件)

语法:zip 压缩名  文件名

-r选项:多个文件压缩 

-o选项:不提示的情况下覆盖文件;

-d选项:指定解压缩路径

zipinfo:查看内容

    (1)压缩文件:zip -r myfile.zip
   将当前目录下的所有文件和目录全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件.

 (2)解压文件:unzip
   unzip  -d /home/sunny myfile.zip
   把myfile.zip文件解压到 /home/sunny/     

 (3)其他

   查看压缩文件中的文件
      zipinfo myfile.zip      

     向压缩文件中myfile.zip中添加rpm_info.txt文件
      zip -m myfile.zip ./rpm_info.txt


2、gzip命令(.gz文件)

gzip只能针对普通文件(regular file)进行压缩和解压,对于文件夹、符号链接等不支持。如果想把多个文件一起压缩并打包,gzip自身办不到的。则需要用tar命令来完成。

语法:gzip 文件名

例:把文件test1.txt打包

localhost:~ # gzip test1.txt

 

解压之前压缩的文件,只需加-d选项即可

localhost:~ # gzip -d test1.txt.gz

 

注:这里需要注意的是,gzip压缩会把源文件覆盖,这里我们可以用-c选项避免

#-c选项就是让gzip把压缩的内容输出到标准输出,而非写入到文件中。

localhost:~ # gzip -c test1.txt > test1.txt.gz

 

gzip与tar区别:

从大概意思来说他们都是一个打包工具,没什么区别。当我们需要打包多个文件时,就特别能体现出tar与gzip区别。

gzip:压缩/解压缩工具,当有多个文件时,gzip只能进行压缩,但不能把多个文件压缩成一个文件,特别的凌乱,这时tar就担任了这个角色。

tar:打包/解包工具,在gzip基础之上,在进行多文件打包成一个文件,管理起来比较方便。

例:对test1.txt进行打包并压缩

localhost:~ # tar -cvf test1.txt.tar.gz test1.txt

解压:

localhost:~ # tar -xvf test1.txt.tar.gz 

 

压缩速度与解压缩强度

 gzip 命令确实为用户提供了这样的选择权,包含了九个压缩级别,分别是 1、2、3、4、5、6、7、8、9:

“1 级”表示压缩速度最快,但强度不高。
“9 级”表示压缩强度最高,但速度较慢。
默认情况下是 6 级。

 

#我们先用“最快速”的压缩等级(1级), 同时使用time来精准计时
localhost:~ # time gzip -1 error.log

real 0m22.322s
user 0m20.983s
sys 0m1.250s

#“最快速”压缩等级, 耗时是22.3秒, 压缩后的大小为99MB
localhost:~ # ls -hl error.log.gz
-rw-r--r-- 1 roc roc 99M 2月 20 14:39 error.log.gz

#然后我们再尝试“最强”压缩等级(9级), 同样也使用time来精准计时
localhost:~ # time gzip -9 error.log

real 1m3.544s
user 1m2.189s
sys 0m1.256s

#“最强”压缩等级, 耗时变长了许多, 为1分3秒, 但压缩后的文件却是更小了, 为70MB
localhost:~ # ls -hl error.log.gz
-rw-r--r-- 1 roc roc 70M 2月 20 14:39 error.log.gz

 

3、bzip2命令(.bz2文件)

bzip2/bunzip2(压缩/解压缩)

语法:bzip2  文件名

localhost:~ # bzip2 test1.txt            压缩

localhost:~ # bunzip2 test1.txt.bz2      解压缩

 

多个文件压缩 

localhost:~ # bzip2 test1.txt test2.txt test3.txt

注:gzip2压缩时也会覆盖源文件,-c可以避免,与gzip语法一样

 

4、tar包管理工具简介

TAR(Tape Archive,TAR)是Linux下的包管理工具,具有5种功能:打包、查询、释放、更新、追加。

      命令格式:tar [主选项+辅助选项] [文件或目录]

选项

说明

-c

创建新的tar包

-t

列出tar包文件的列表

-x

从tar包中释放文件

-r

把备份文件追加到已备份文件的末尾

辅助选项

说明

-f

选择文件或设备,必选项

-v

显示命令执行的详细信息

-z

用gzip来压缩/解压缩文件

-j

用bzip2来压缩/解压缩文件

-C

指定文件解压后的存放路径

    对文件进行打包:tar -cf xx.tar files.txt sdb1.txt

    列出tar包文件包含的文件:tar -tf xx.tar

    解包到当前目录:tar -xf xx.tar -C ./

    压缩为gzip: tar -zcf yy.gz files.txt sdb1.txt

    压缩为bzip2:tar -jcf yy.bz2 files.txt sdb1.txt

除了以上几种打包工具,我们也可以自己添加

rar命令

下载rarlinux-x64-5.7.1.tar.gz:https://www.rarlab.com/download.htm

解压后将rar文件到/usr/local目录下:tar -xf rarlinux-x64-5.7.1.tar.gz -C usr/local/

然后执行以下命令

ln -s /usr/local/rar/rar /usr/local/bin/rar

ln -s /usr/local/rar/unrar /usr/local/bin/unrar

压缩文件:rar a test.rar ./test/

列出压缩文件:rar l test.rar

解压文件:rar x test.rar ./  

  

以上是关于Linux文件打包的主要内容,如果未能解决你的问题,请参考以下文章

Linux打包和压缩

linux文件管理--压缩打包

Linux下,如何用命令,要求:只打包当前文件夹和所有子文件夹中的.

Linux基础 常用Linux命令

linux下打包(文件更新时间)为指定时间的命令行怎么写?

Linux文件压缩与打包