linux下如何查看文件的压缩类型,用啥命令解压

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下如何查看文件的压缩类型,用啥命令解压相关的知识,希望对你有一定的参考价值。

今天解压个tar文件,用tar zxvf一直报错,用file查看也是tar类型,后来无意看到个帖子说tar xvf就行了,试了下果然成功。想问下能不能看出该文件是用什么命令压缩的,用什么解压!!

这是一个概念问题
.tar文件并不是压缩文件,只是一个打包文件而已,所以解包时只需要xvf,不带z;
带z的zxvf是解压缩用gzip程序压缩的.gz文件。
而我们常见的文件一般是 foo.tar.gz,这是先用tar命令打包,再用zip命令压缩所产生的,
所以有了一步到位的tar zxvf命令,它等价于先unzip,再tar xvf解开。
另有bar.tar.bz文件,它就是用bzip2压缩的,解开时用命令tar jxvf,原理相同。
参考技术A 现在最常用的压缩格式是.bz和.bz2
linux下压缩类型都是看文件后缀的。
解压命令是
tar xvf 压缩文件名
这条命令会把文件解压到当前目录下
也可以用 -C 指定解压到那个目录
参考技术B tar类型只是打包了并没有压缩,所以你加参数z (以gzip 格式解压)抱错.
一般
*.tar.gz 是gzip压缩的,*.tar.bz是bzip2压缩的.
参考技术C .tar是打包文件,不是压缩文件! 所以解包:tar -xvf 文件名,打包:tar -cvf 文件名.tar 文件名!
打包的压缩文件的后缀名.tar.gz或者.tar.z,解压命令 :tar -xzvf 文件名,打包压缩命令:tar -czvf 文件名.tar.gz 文件名!
一般仅仅是.gz或者.z的是单文件压缩,解压命令分别是gunzip、unzip!!!
参考技术D 用zip压缩也是可以的啊。unzip。和windows下面是一样的、

如何解压.tar.gz gzip gz 类型文档

java解压缩.gz .zip .tar.gz等格式的压缩包方法总结
1、.gz文件是linux下常见的压缩格式。使用 java.util.zip.GZIPInputStream即可,压缩是 java.util.zip.GZIPOutputStream

1 public static void unGzipFile(String sourcedir)
2 String ouputfile = "";
3 try
4 //建立gzip压缩文件输入流
5 FileInputStream fin = new FileInputStream(sourcedir);
6 //建立gzip解压工作流
7 GZIPInputStream gzin = new GZIPInputStream(fin);
8 //建立解压文件输出流
9 ouputfile = sourcedir.substring(0,sourcedir.lastIndexOf('.'));
10 ouputfile = ouputfile.substring(0,ouputfile.lastIndexOf('.'));
11 FileOutputStream fout = new FileOutputStream(ouputfile);
12
13 int num;
14 byte[] buf=new byte[1024];
15
16 while ((num = gzin.read(buf,0,buf.length)) != -1)
17
18 fout.write(buf,0,num);
19
20
21 gzin.close();
22 fout.close();
23 fin.close();
24 catch (Exception ex)
25 System.err.println(ex.toString());
26
27 return;
28

2、zip文件,使用java.util.zip.ZipEntry 和 java.util.zip.ZipFile

1 /**
2 * 解压缩zipFile
3 * @param file 要解压的zip文件对象
4 * @param outputDir 要解压到某个指定的目录下
5 * @throws IOException
6 */
7 public static void unZip(File file,String outputDir) throws IOException
8 ZipFile zipFile = null;
9
10 try
11 Charset CP866 = Charset.forName("CP866"); //specifying alternative (non UTF-8) charset
12 //ZipFile zipFile = new ZipFile(zipArchive, CP866);
13 zipFile = new ZipFile(file, CP866);
14 createDirectory(outputDir,null);//创建输出目录
15
16 Enumeration<?> enums = zipFile.entries();
17 while(enums.hasMoreElements())
18
19 ZipEntry entry = (ZipEntry) enums.nextElement();
20 System.out.println("解压." + entry.getName());
21
22 if(entry.isDirectory())//是目录
23 createDirectory(outputDir,entry.getName());//创建空目录
24 else//是文件
25 File tmpFile = new File(outputDir + "/" + entry.getName());
26 createDirectory(tmpFile.getParent() + "/",null);//创建输出目录
27
28 InputStream in = null;
29 OutputStream out = null;
30 try
31 in = zipFile.getInputStream(entry);;
32 out = new FileOutputStream(tmpFile);
33 int length = 0;
34
35 byte[] b = new byte[2048];
36 while((length = in.read(b)) != -1)
37 out.write(b, 0, length);
38
39
40 catch(IOException ex)
41 throw ex;
42 finally
43 if(in!=null)
44 in.close();
45 if(out!=null)
46 out.close();
47
48
49
50
51 catch (IOException e)
52 throw new IOException("解压缩文件出现异常",e);
53 finally
54 try
55 if(zipFile != null)
56 zipFile.close();
57
58 catch(IOException ex)
59 throw new IOException("关闭zipFile出现异常",ex);
60
61
62
63
64 /**
65 * 构建目录
66 * @param outputDir
67 * @param subDir
68 */
69 public static void createDirectory(String outputDir,String subDir)
70 File file = new File(outputDir);
71 if(!(subDir == null || subDir.trim().equals("")))//子目录不为空
72 file = new File(outputDir + "/" + subDir);
73
74 if(!file.exists())
75 if(!file.getParentFile().exists())
76 file.getParentFile().mkdirs();
77 file.mkdirs();
78
79

3、.tar.gz文件可以看做先用tar打包,再使用gz进行压缩。
使用org.apache.tools.tar.TarEntry; org.apache.tools.tar.TarInputStream 和 org.apache.tools.tar.TarOutputStream

1 //------------------------------------------------------------------------------------------------------
2 /**
3 * 解压tar.gz 文件
4 * @param file 要解压的tar.gz文件对象
5 * @param outputDir 要解压到某个指定的目录下
6 * @throws IOException
7 */
8 public static void unTarGz(File file,String outputDir) throws IOException
9 TarInputStream tarIn = null;
10 try
11 tarIn = new TarInputStream(new GZIPInputStream(
12 new BufferedInputStream(new FileInputStream(file))),
13 1024 * 2);
14
15 createDirectory(outputDir,null);//创建输出目录
16
17 TarEntry entry = null;
18 while( (entry = tarIn.getNextEntry()) != null )
19
20 if(entry.isDirectory())//是目录
21 entry.getName();
22 createDirectory(outputDir,entry.getName());//创建空目录
23 else//是文件
24 File tmpFile = new File(outputDir + "/" + entry.getName());
25 createDirectory(tmpFile.getParent() + "/",null);//创建输出目录
26 OutputStream out = null;
27 try
28 out = new FileOutputStream(tmpFile);
29 int length = 0;
30
31 byte[] b = new byte[2048];
32
33 while((length = tarIn.read(b)) != -1)
34 out.write(b, 0, length);
35
36
37 catch(IOException ex)
38 throw ex;
39 finally
40
41 if(out!=null)
42 out.close();
43
44
45
46 catch(IOException ex)
47 throw new IOException("解压归档文件出现异常",ex);
48 finally
49 try
50 if(tarIn != null)
51 tarIn.close();
52
53 catch(IOException ex)
54 throw new IOException("关闭tarFile出现异常",ex);
55
56
57

使用到的包头有:

1 import java.io.BufferedInputStream;
2 import java.io.File;
3 import java.io.FileInputStream;
4 import java.io.FileOutputStream;
5 import java.io.IOException;
6 import java.io.InputStream;
7 import java.io.OutputStream;
8
9 import java.nio.charset.Charset;
10 import java.util.Enumeration;
11 import java.util.zip.GZIPInputStream;
12 import java.util.zip.ZipEntry;
13 import java.util.zip.ZipFile;
14
15 import org.apache.tools.tar.TarEntry;
16 import org.apache.tools.tar.TarInputStream;
17 import org.apache.tools.tar.TarOutputStream;
参考技术A 你做法没错. 不过gzip认后缀名,你要先把文件改成.gz的文件,然后才能解 mv xxx.tar xxx.tar.gz 然后再用一命令解压 tar xvfz xxx.tar.gz 就可以一次性解压了

以上是关于linux下如何查看文件的压缩类型,用啥命令解压的主要内容,如果未能解决你的问题,请参考以下文章

linux 查看压缩包里文件,用啥命令?

linux下如何用unzip解压目录内所有zip文件?

macbook 用啥压缩软件

如何在Linux上使用tar命令解压和压缩文件

linux|无需解压查看压缩文件内容

linux 命令。不解压zip文件,可否查看这个zip里面都有哪些文件?