Linux 【tar 命令】打包/解压文件

语法:

tar [选项...] [FILE]..

选项:

-c : create :创建新的归档文件(打包),不压缩

-x : extract :从归档文件中提取文件(解包

-C : 解压缩到指定目录

-f <文件名> : file : 指定归档文件名

-v : verbose :显示操作的详细信息

-z : gzip : 通过gzip压缩归档文件

-j : bzip2 :通过bzip2压缩归档文件

-C <目录> : 切换到指定目录

--exclude=<模式> : 排除匹配模式的文件

-t:--list : 列出归档文件的内容

-p或--same-permissions 用原来的文件权限还原文件。等同于: --preserve-permissions

-r或--append : 追加文件到已存在的归档文件

示例:

1. 创建归档文件,打包文件和目录:

#语法:
tar -cvf  归档文件路径.tar  文件/目录
#把 doc 打包到名为 doc.tar 的文件中
tar -cf doc.tar /home/user/doc/

2.在打包时排除特定文件或目录,以避免将其包含在归档中

--exclude=<模式> : 排除匹配模式的文件:

#打包 doc 目录时,排除以 .txt 结尾的文件
tar -cf doc.tar --exclude='*.txt' /home/user/doc/

3.要创建一个保留权限和所有权的归档文件

--preserve-permissions 等同于 -p:

#打包 doc 目录时,保留原始文件的权限和所有权信息
tar --preserve-permissions -cf doc.tar /home/user/doc/

4.解包归档文件, 还原其中包含的文件和目录

-C : 指定目录:

#语法:
tar -xvf  压缩包/归档文件
#解压 doc.tar
tar -xvf doc.tar
#解压到 指定路径
tar -xvf doc.tar -C /tmp/

5.压缩归档文件,tar 与压缩工具一起使用,以创建压缩的归档文件:

#常见的压缩:-z(使用gzip压缩)和 -j(使用bzip2压缩)
#gzip 压缩:
tar -czvf doc.tar.gz /home/user/doc.txt
#解压:当前目录
tar -xzvf doc.tar.gz
#bzip2 压缩:
tar -cjvf doc.tar.gz /home/user/doc.txt
#解压:home目录
tar -xjvf doc.tar.gz -C /tmp/

6.--list参 或 -t:列出归档文件中的内容,而无需实际提取它们

tar --list -f /tmp/mysql-boost-5.7.27.tar.gz 
tar -tf /tmp/mysql-boost-5.7.27.tar.gz |head

7.追加文件到已存在的归档中:

#语法:
tar -rvf 归档文件  新文件
#将名为 newfile 的文件添加到已存在的名为 archive.tar 的归档文件中
tar -rvf archive.tar newfile
在Java中,tar文件通常用于压缩和归档目录或文件。如果你想解压一个.tar文件,可以使用一些Java库如Apache Tarball Utility (Taru) 或者是通过Runtime.getRuntime().exec()方法调用操作系统自带的命令行工具。 以下是一个简单的示例,说明如何使用Java的标准工具包解压tar文件: ```java import java.io.*; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class Main { public static void main(String[] args) { String archivePath = "path_to_your_tar_file.tar"; String destinationDir = "path_to_extract_to"; try { // 创建一个进程运行tar命令 Process proc = Runtime.getRuntime().exec("tar -xvf " + archivePath + " -C " + destinationDir); // 获取进程的输入输出流,用于获取解压过程的日志信息 BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); BufferedReader errorReader = new BufferedReader(new InputStreamReader(proc.getErrorStream())); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } // 检查错误流是否为空,如果非空则表明有错误发生 if ((line = errorReader.readLine()) != null) { System.err.println("Error during extraction: " + line); } // 等待进程结束 int exitCode = proc.waitFor(); if (exitCode != 0) { System.err.println("Command execution failed with exit code: " + exitCode); } } catch (IOException | InterruptedException e) { e.printStackTrace(); } } } ``` 记得替换`archivePath`和`destinationDir`为实际路径。这个例子假设tar文件是标准的tar格式,并且目标目录已经存在。如果需要更复杂的操作,比如处理gzip压缩的tar.gz文件,你可以引入额外的库,如`org.apache.commons.compress`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值