【linux】(17)压缩和解压

server/2024/11/24 18:53:28/

tar

tar 是一个用于创建、维护、修改和解压缩存档文件的 Linux 命令。tar 常常用于备份文件或者将多个文件打包成一个文件以便于传输或存储。以下是 tar 命令的详细教程,包括常用选项和示例:

基本语法

tar [选项] [文件或目录]

常用选项

  • -c:创建一个新的存档。
  • -x:从存档中提取文件。
  • -t:列出存档中的文件。
  • -v:显示操作过程(verbose),通常与其他选项配合使用以显示详细信息。
  • -f:指定存档文件的名称。在使用时,-f 后面紧跟目标 tar 文件名。
  • -z:使用 gzip 压缩或解压缩文件(扩展名通常为 .tar.gz.tgz)。
  • -j:使用 bzip2 压缩或解压缩文件(扩展名通常为 .tar.bz2.tbz)。
  • -J:使用 xz 压缩或解压缩文件(扩展名通常为 .tar.xz)。
  • -C:改变到指定目录。例如,从存档中提取时,将文件解压到指定目录。

常见用法

  1. 创建 tar 存档

    将目录 dir/ 打包为 archive.tar

    tar -cvf archive.tar dir/
    
  2. 创建压缩存档

    使用 gzip 压缩:

    tar -cvzf archive.tar.gz dir/
    

    使用 bzip2 压缩:

    tar -cvjf archive.tar.bz2 dir/
    

    使用 xz 压缩:

    tar -cvJf archive.tar.xz dir/
    
  3. 提取(解压缩)tar 存档

    archive.tar 中提取文件:

    tar -xvf archive.tar
    

    从压缩过的存档中提取文件:

    tar -xvzf archive.tar.gz    # gzip 压缩
    tar -xvjf archive.tar.bz2   # bzip2 压缩
    tar -xvJf archive.tar.xz    # xz 压缩
    
  4. 列出存档内容

    查看存档 archive.tar 中包含的文件:

    tar -tvf archive.tar
    
  5. 解压缩到指定目录

    将存档解压缩到 target-directory/

    tar -xvf archive.tar -C target-directory/
    
  6. 附加文件到现有存档

    file.txt 添加到 archive.tar

    tar -rvf archive.tar file.txt
    

注意事项

  • 使用 -f 选项时,tar 要求目标文件名紧跟在选项后面。
  • tar 的压缩和解压缩选项 -z, -j, 和 -J 不能混合使用,每次操作要确定只采用一种压缩方式。

了解这些基本用法后,你就能有效地使用 tar 命令来管理 Linux 环境中的文件存档。如果需要进一步学习,可以查看 tar 的手册页,命令如下:

man tar

gzip

gzipgunzip 是 Unix 和 Linux 系统中常用的命令行工具,用于文件压缩和解压缩。gzip 用于压缩文件,而 gunzip 用于解压缩。它们通常与其他工具(如 tar)结合使用以管理压缩存档。

gzip和gunzip

gzip 是用于将文件压缩为 .gz 格式的工具。压缩后的文件通常比原始文件小,因此可以节省存储空间或加快传输速度。

基本语法
gzip [选项] [文件名]
常用选项
  • -c:将输出发送到标准输出(stdout),而不是覆写原始文件。
  • -d:解压缩文件。这与使用 gunzip 的效果相同。
  • -k:在压缩时保留原文件。
  • -r:递归压缩目录中的所有文件。
  • -v:显示详细的压缩信息。
  • -1-9:指定压缩级别。-1 为最快(最低压缩),-9 为最慢(最高压缩)。默认使用 -6
示例
  1. 压缩文件

    file.txt 压缩为 file.txt.gz

    gzip file.txt
    
  2. 压缩文件并保留原文件

    使用 -k 选项保留原始文件:

    gzip -k file.txt
    
  3. 将输出发送到标准输出

    压缩 file.txt 并输出到标准输出,而不创建 .gz 文件:

    gzip -c file.txt > file.txt.gz
    
  4. 递归压缩目录中的文件

    压缩 dir/ 目录中的所有文件:

    gzip -r dir/
    
  5. 指定压缩级别

    使用最高压缩级别(可能较慢):

    gzip -9 file.txt
    

gunzip

gunzip 通常与 gzip 配合使用,用于解压缩 .gz 文件。

基本语法
gunzip [选项] [压缩文件名]
常用选项
  • -c:将解压缩输出发送到标准输出,而不覆写原文件。
  • -k:在解压缩时保留压缩文件。
  • -v:显示详细的解压缩信息。
示例
  1. 解压缩文件

    file.txt.gz 解压缩为 file.txt

    gunzip file.txt.gz
    
  2. 解压缩并将输出发送到标准输出

    将解压缩的内容输出到标准输出:

    gunzip -c file.txt.gz > file.txt
    
  3. 保留压缩文件

    解压缩时保留原始压缩文件:

    gunzip -k file.txt.gz
    

结合使用 tar

压缩和解压缩目录通常结合 targzip 使用。创建 .tar.gz 文件的命令为:

tar -cvzf archive.tar.gz directory/

解压 .tar.gz 文件:

tar -xvzf archive.tar.gz

通过掌握以上命令和选项,你可以灵活地使用 gzipgunzip 来压缩和解压缩文件,从而更有效地管理系统中的文件和目录。对于更多详细信息,可以访问手册页:

man gzip
man gunzip

ZIP

在 Linux 中,zip 是一个常用的压缩工具,用于将文件和目录压缩成 .zip 格式的压缩包。

安装 zip

在大多数 Linux 发行版中,zip 工具可能已经预安装。如果没有,你可以使用包管理器进行安装:

  • 对于基于 Debian 的系统(如 Ubuntu):
sudo apt update sudo apt install zip
  • 对于基于 Red Hat 的系统(如 CentOS):
sudo yum install zip
  • 对于基于 Arch 的系统(如 Manjaro):
sudo pacman -S zip

基本用法

  1. 压缩文件 将单个文件压缩成 .zip 文件:
zip archive_name.zip file1

这里 archive_name.zip 是压缩文件的名称,file1 是要压缩的文件。

  1. 压缩多个文件 同时将多个文件压缩到同一个 .zip 文件中:
zip archive_name.zip file1 file2 file3
  1. 压缩目录 使用 -r(递归)选项来压缩整个目录及其子目录:
zip -r archive_name.zip directory_name/

高级用法

  1. 排除特定文件 使用 -x 选项来排除不想压缩的文件或目录:
zip -r archive_name.zip directory_name/ -x file_to_exclude
  1. 分卷压缩 如果需要将压缩文件分成多个较小的部分,可以使用 -s 选项来指定每个分卷的大小。例如,将压缩文件分成 50MB 的部分:
zip -r -s 50m archive_name.zip directory_name/
  1. 设置压缩等级 使用 -0-9 的选项来设置压缩等级,其中 -0 表示存储(无压缩),-9 表示最大压缩:
zip -r -9 archive_name.zip directory_name/
  1. 使用密码保护 使用 -e 选项来为压缩文件设置密码保护:
zip -e archive_name.zip file1

命令执行后,系统会提示你输入密码。

解压缩

要解压缩 .zip 文件,可以使用 unzip 命令。如果尚未安装 unzip,可以使用与安装 zip 相同的方法进行安装。

  • 解压缩 .zip 文件到当前目录:
unzip archive_name.zip
  • 解压缩 .zip 文件到指定目录:
unzip archive_name.zip -d destination_directory

http://www.ppmy.cn/server/144612.html

相关文章

Redis配置主从架构、集群架构模式 redis主从架构配置 redis主从配置 redis主从架构 redis集群配置

Redis配置主从架构、集群架构模式 redis主从架构配置 redis主从配置 redis主从架构 redis集群配置 1、主从模式1.1、主节点配置1.2、从节点配置1.3、测试 2、集群模式 1、主从模式 1.1、主节点配置 # 监听所有网络接口 bind 0.0.0.0# cluster-enabled表示为集群模式&#xff…

快速入门消息队列MQ、RabbitMQ

目录 一、MQ简介 1.同步调用 2.异步调用 3.技术选型 二、RabbitMQ 1.安装 2.控制台的使用说明 2.1交换机 2.2队列​编辑 2.3绑定关系 3.AMQP 3.1快速入门 3.2WorkQueues模型 3.3交换机 3.3.1 Fanout交换机 3.3.2 Direct交换机 3.3.3 Topic交换机 3.4 声明交换机…

钉钉免登录接口

查阅钉钉提供的开发文档,发现了三种免登录API接口 当然,在使用之前还是要先下载钉钉对应的依赖包 dingtalk-jsapi,并在页面内引入 1. dd.requestAuthCode dd.requestAuthCode({corpId: config.corpId,clientId: config.clientId,onSuccess…

自动化立体仓库:详解

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 完整版文件和更多学习资料,请球友到知识星球【智能仓储物流技术研习社】自行下载。 自动化立体仓库(Automated S…

获取毫秒级系统时钟

一 引言 有时候,在windows程序中,需要高精度的时间,比如ms级。 这时,可以使用GetTickCount函数。 二 做法 调用函数需包含windows.h。得到的是系统运行的时间,精确到毫秒,测试程序如下: #i…

BUUCTF—Reverse—reverse1(2)

拿到exe文件先查下信息,是一个64位程序,没有加壳 (壳是对代码的加密,起混淆保护的作用,一般用来阻止逆向)。 然后拖进IDA(64位)进行反汇编 一般来说,先查看一下字符串,简单的题目会…

next build报错bash: next: command not found

相关背景:我有个next.js项目(第一次使用next.js框架),想构建一下,发现报错了,没有该命令。 (ps:我测试用的是:yarn dev) 然后我用everything全局搜了下 next…

C语言:操作符详解1

一.操作符的分类 算术操作符&#xff1a;、-、* 、 /、% 移位操作符&#xff1a;<< >> 位操作符&#xff1a;& | ^ 赋值操作符&#xff1a; 、、-、*、/、%、<<、>>、&、|、^ 单目操作符&#xff1a;!、、--、&、*、、-、~、sizeo…