Linux压缩/解压缩,详解(tar,gz,bz2,xz,zip,rar)

Linux压缩/解压缩,详解(tar,gz,bz2,xz,zip,rar)

tar

//tar压缩/解压缩
//tar [主选项+辅助项] file/folder
//主选项-x,-c,-r,-u,-t
//辅助项-z,-j,-Z,-f,在“-f”选项之后不能再跟任何其他选项。-v是显示过程,一般不显示吧..

另:在linux的命令中,有些命令的选项之前是有横杠的,比如ls -a,有些是没有横杠的,比如tar xvf这样的,这到底有什么区别呢?
可以这样说,这个和程序脚本的设计风格有关,是脚本自己设定的,一般来讲,有横杠的是System V风格,没有横杠的是BSD风格
此外,横杠后面跟一个字符的选项用单横杠,后面跟一个单词的用双横杠。比如用--help这样的选项,如果写成了-help,那就变成要分别找命令的-h, -e, -l, -p选项了,而--help只会找help这个选项。

tar -rf FileName.tar *.gif //将所有.gif的文件添加到all.tar的包里面去。-r表示添加文件
tar -uf FileName.tar logo.gif //更新原来tar包all.tar中logo.gif文件,-u表示更新文件
tar -tf FileName.tar //列出all.tar包中所有文件,-t是列出文件的意思

tar(.tar)
tar -xf FileName.tar //解压all.tar包中所有文件,-x表示解压
tar -xf FileName.tar -C DirName //解压到指定文件夹DirName
tar -cf FileName.tar *.jpg//DirName //将所有.jpg或DirName目录的文件打成一个名为all.tar的包。-c是表示产生新的包 ,-f指定包的文件名。DirName

gzip(.gz)
gunzip FileName.gz //解压.gz
gzip -d FileName.gz //解压.gz
gzip FileName DirName //压缩为.gz
(tar.gz,.tgz)
tar -xzf FileName.tar.gz //解压.tar.gz
tar -czf FileName.tar.gz DirName //压缩为.tar.gz

bzip2(.bz2)
bzip2 -d FileName.bz2 //解压.bz2
bunzip2 FileName.bz2 //解压.bz2
bzip2 -z FileName //压缩为.bz2
(.tar.bz2)
tar -xjf FileName.tar.bz2 //解压.tar.bz2,bz2为一个压缩能力更强的压缩程序
tar -cjf FileName.tar.bz2 DirName //压缩为.tar.bz2

bzip(.bz)
bzip2 -d FileName.bz //解压.bz
bunzip2 FileName.bz //解压.bz
压缩:未知
(.tar.bz )
tar xjf FileName.tar.bz //解压.tar.bz
tar cjf FileName.tar.bz DirName //压缩为.tar.bz

//xz解压/压缩
xz -d xxx.xz //解压xz文件
xz -z abc //压缩文件成xz
tar -Jxvf filename.tar.xz //大写J

compress(.Z)
uncompress FileName.Z //解压.Z
compress FileName DirName //压缩为.Z
tar -xZf FileName.tar.Z //bzip2,解压一个tar.Z(tar调用uncompress)
tar -cZf FileName.tar.Z //压缩为bzip2

事实上, 从1.15版本开始tar就可以自动识别压缩的格式,故不需人为区分压缩格式就能正确解压

tar -xvf filename.tar.gz
tar -xvf filename.tar.bz2
tar -xvf filename.tar.xz
tar -xvf filename.tar.Z

zip(.zip)
unzip FileName.zip //解压.zip
zip FileName.zip DirName //压缩为.zip
zip -q -r data.zip /home/data //将/home/data这个目录下的所有文件打包压缩为当前目录下的data.zip,-r递归,-q静默...
//如果现在在/home 这个目录下,则如下zip -q -r data.zip data
//如果在/home/data 这个目录下,zip -q -r data.zip *

rar(.rar) //安装:sudo wget https://www.rarlab.com/rar/rarlinux-x64-5.9.0.tar.gz,tar -zxf rarlinux-5.9.0.tar.gz,cd rar,make,make install...
rar x FileName.rar //解压.rar,x是解压
rar a FileName.rar DirName //压缩为.rar,a是添加压缩

rar(rar/unrar/7zip)
//sudo apt-get install rar
//sudo apt-get install unrar
//sudo apt-get install p7zip*

unrar x xxx.rar path/to/yyy //将xxx.rar里的文件解压到yyy文件夹下
//关于命令e :去掉路径解压,路径可以指定具体的,如果rar文件里有文件夹,将会忽略文件夹而将具体的所有文件全部释放到指定目录里
//关于命令x : 全路径解压,路径可以具体指定,不会忽略文件夹,而是将文件夹释放出来
unrar e不好用啊?用 rar x examples.rar..

7za x FileName.7z -r -o./ //x代表解压缩文件,-r表示递归解压缩所有的子文件夹,-o是指定解压到的目录,-o后是没有空格的,直接接目录。这一点需要注意。
7za a -t7z -r FileName.7z DirName //a代表添加文件/文件夹到压缩包,-r表示递归所有的子文件夹
//-t 是指定压缩类型,这里定为7z,可不指定,因为7za默认压缩类型就是7z。7za不仅仅支持.7z压缩格式,还支持.tar.bz2等压缩类型的。如上所述,用-t指定即可。

目录路径问题
如/etc这些,都是绝对路径(/xxx);目录名不能使用/xxx,因为是绝对路径的某目录才行,也不能使用./,会被识别为.去打包..
会报错“从成员名中删除开头的/”,造成该问题的原因是因为使用相对路径和绝对路径引起的。另外还有一种解决方法是,使用相对路径:etc/

源码安装(.tar、tar.gz、tar.bz2、tar.Z)
首先解压缩源码压缩包,通过tar命令来完成,然后进入到解压出的目录中,建议先读一下README之类的说明文件,因为此时不同源代码包或者预编译包可能存在差异
然后建议使用ls -F –color或者ls -F命令(实际上我的只需要 l 命令即可)查看一下可执行文件,可执行文件会以*号的尾部标志。
一般依次执行
sudo wget http://xxx.com.xxx.tar.gz
tar xx.tar.gz
cd xx/
./configure
make
sudo make install

posted @ 2020-04-19 02:15  红薯荞麦面  Views(1125)  Comments(0Edit  收藏  举报