linux 基础(5)文件的打包和压缩
文件的压缩是非常重要和常见的操作。
在 Windows 下,zip 和 rar 经常使用的压缩软件,框选一堆文件,右键用 WinRAR 就可以完成压缩。不过在 linux 下通常不这么做。一是因为 linux 的压缩指令针对单个文件,将多个文件合为一个文件被称为“打包”,打包和压缩是分离的(其实 Win 下很多时候压缩文件目的主要也是打包而不是压缩嘛);二是因为 zip 和 GNU 不是一家的,所以 zip 不能完整保存压缩后文件的 rwx 等权限。
linux 常用的压缩工具有 gzip, bzip2, xz。
压缩
gzip, bzip2, xz 都是压缩单个文件的指令,通常压缩的文件以*.gz、*.bz2 或者 *.xz 作为文件名。这三个命令出现的时间越来越晚,压缩算法也越来越先进,用法基本相同,这里用 gzip 为例介绍他们。
$ gzip -选项 文件名
-c:将压缩文件通过管道输出
-v:压缩时控制台打印压缩信息
-d:解压缩参数
-1:数字表示压缩等级1-9,等级越高压缩时间越长,压缩比越好
-k:压缩后不删除源文件(默认删除)
$ gzip 1.cpp # 生成了 1.cpp.gz,源文件被删除
$ gzip -d 1.cpp.gz # 文件还原了,也可用 gunzip
要查看压缩文件的内容(如果是文本文件),无需解压缩,使用 zcat/zless/zgrep 直接查看压缩文件即可(与 cat/less/grep 对应);如果是 bzip2 文件就用 bzcat,xz 使用 xzcat。
打包
压缩指令只针对一个文件,打包 tar 可以将多个文件合成一个文件,所以压缩包常常是 .tar.gz 和 .tar.bz2 等形式。不过 tar 命令本身也承担的压缩的功能,他可以在打包完成后自动压缩。
$ tar [-zjJ]-其他命令 -f 文件名
-f:指定操作的文件名
-zjJ:z 表示使用 gzip 压缩,j 表示 bzip2,J 表示 xz。这是三选一的关系
-v:打包压缩时控制台打印信息
-p:保存数据的权限属性
-c:创建压缩包
-t:查看压缩包
-x:解压
$ tar -zcvf ./save.gz ./ # 当前目录打包到 save.gz
$ tar -ztvf ./save.gz # 查看
$ tar -zxvf ./save.gz # 解压缩
压缩的根目录问题:
同一个目录,用不同的路径写他,压缩文件里保存的路径也不一样
tar -vczf save.gz learngit
tar -vczf save.gz ../ofnoname/learngit
tar -vczf save.gz /home/ofnoname/learngit
tar -tzf save.gz # 查看压缩文件
第一个命令,压缩 learngit 文件夹,查看里面的内容,都是 learngit/xxx 的形式。而第二个命令,压缩出现提示"tar: 从成员名中删除开头的“../”",查看里面的内容,都是 ofnoname/learngit/xxx 的形式。第三个则没有了 / ,成为了home/ofnoname/learngit。
问题在于,如果你在一个地方解压缩文件,肯定是希望在当前目录下再出现一个文件夹来放置解压后的文件的,如果保留了../ofnoname/learngit,解压的时候就文件冒到上一个文件夹了;要是保留了/home/ofnoname/learngit,那更不得了,解这个压缩包文件就会直接出现在根目录了。
所以压缩的时候,默认会去除绝对目录,保证整个压缩包里是一个不能往上返回的相对目录,不过也可以使用 -P 保留原路径。
linux 基础(5)文件的打包和压缩的更多相关文章
- linux下文件的打包和压缩
文章来源:linux下文件的打包和压缩 目录 一.文件压缩的原理 二.linux常见的压缩指令 三.常用实例 1.tar命令 2.zip命令 3.gz命令 4.bz2命令 5.xz命令(必须分两步) ...
- Linux基础命令-文件与目录
Linux基础命令-文件与目录 参考:<鸟哥linux私房菜>五-七章,17/12/5复习,18/01/15复习 文件权限 rwx421:用户,用户组,其他 umask查看默认权限:000 ...
- linux中tar命令(打包、压缩、解压)、zip和unzip、rar多种压缩文件
一.名词解释 打包:将一大堆文件或目录变成一个总的文件[tar命令] 压缩:将一个大的文件通过一些压缩算法变成一个小文件[gzip,bzip2等] Linux中很多压缩程序只能针对一个文件进行压缩,这 ...
- Linux学习总结(十四) 文件的打包和压缩
文件的压缩和打包,在windos下我们很熟悉.rar和.zip文件,这是两种压缩文件,他们支持单个文件和多个文件的压缩.windos下我们不提及打包的概念,虽然多个文件的压缩肯定存在打包过程.打包和压 ...
- Linux文件的打包与压缩
打包命令: tar tar 的选项与参数非常的多!我们只讲几个常用的选项,更多选项您可以自行 man tar 查询罗! [root@www ~]# tar [-j|-z] [cv] [-f 创建的档名 ...
- Linux学习笔记—文件与文件系统的压缩与打包(转载)
压缩文件的用途与技术 例如,计算机都是以byte单位来计量的,1byte占8bit.如果存储数字1,那么1byte就会空出7bit.采用一定的计算方式,压缩这些空间可以大大降低文件存储. Linux系 ...
- linux基础命令学习 (七)压缩解压
一.tar tar主要用来压缩和解压文件 语法: tar [主选项+辅选项] 文件或者目录 主选项: c 创建新的档案文件.如果用户想备份一个目录或是一些文件,就要选择这个选项.相当于打包. x 从档 ...
- 一、linux基础-对文件操作
1.1文件夹创建-复制-移动-重命名-删除1.创建文件夹mkdir zjbdir 2.复制文件/文件夹复制文件到:当前目录cp -r zjbdir zjbdir201600819复制文件到:当前目录 ...
- Linux基础操作文件等基础操作
作业一: 1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) [root@bogon /]# cd /etc [root@bogon etc]# cat passwd ...
- Linux 基础——查看文件内容的命令
第四天,继续学习.今天看到一句话,"你以为你以为的就是你以为的吗?",这句话还是有点意思啊!!! 一.查看文件内容的命令 file dest:查看文件的类型.在Linux中,文件的 ...
随机推荐
- 【转载】 arch linux下nvidia 驱动死机问题
原文地址: https://my.oschina.net/u/947271/blog/288063 ================================================== ...
- 【转载】 推荐系统 EE 问题与 Bandit 算法
原文地址: https://toutiao.io/posts/584etm/preview ------------------------------------------------------ ...
- Ubuntu22.04下安装chrome浏览器
Ubuntu下Chrome的下载: 地址: https://www.google.cn/intl/zh-CN/chrome/ 下载后的文件: 安装: 命令: sudo dpkg -i google-c ...
- 利用Linux系统提供的和调度器相关的接口让进程或线程对某个处理器进行绑定
目录 设置进程与CPU的亲和性 设置线程与CPU的亲和性 设置进程与CPU的亲和性 taskset命令允许你查看或设置运行中的进程的CPU亲和性(即该进程可以在哪些CPU上运行). 要将一个已经运行的 ...
- Blazor开发框架Known-V2.0.8
V2.0.8 Known是基于Blazor的企业级快速开发框架,低代码,跨平台,开箱即用,一处代码,多处运行.目前已有部分客户在使用,最近客户的项目和产品,有的在Docker中运行,有的在重新升级改造 ...
- 旧笔记本安装Win8.1实录
昨天发现一台尘封已久的Lenovo ideapad Y550,给它装上了Windows 10 然后第二天系统挂掉了 挂的原因是半夜万恶之源Windows更新开始造孽了 刚好没电 文件全坏了 真 解除封 ...
- homeassistant_Midea AC LAN使用问题记录
1. hass life设备在通知中提示连接成功就不需要修改hass life 中的配置内容 2. 如果空调显示不可用, 只需要在 配置 - 集成 删除Midea AC LAN后重新自动添加即可
- env 命令简介
env 命令在 Unix 和 Unix-like 操作系统中,是用来运行一个指定的程序/命令,在执行时可以修改环境变量的一个工具.使用 env 可以启动任何指定的指令,并在这个指令的执行过程中设置或者 ...
- 关于SQLServer数据库的READ_COMMITTED_SNAPSHOT隔离级别
默认情况下,SQL Server的事务隔离级别是READ COMMITED.刚开始我理解这个模式就是读已经提交的,那也就是说并发一个事务去更新,一个事务查询同一条数据应该是像Mysql.Oracle不 ...
- [kubernetes]使用kubeadm和containerd部署kubernetes
前言 因宿主机内核版本限制和垂直伸缩特性的需要,安装的k8s版本为1.25,runtime为containerd,cni为calico. containerd.kubeadm.kubelet也可以用包 ...