linux学习第二十篇:zip压缩,tar打包以及打包压缩
zip压缩工具
zip可以压缩目录,zip压缩包不能直接查看文件内容,只能查看里面文件列表
zip 1.txt.zip 1.txt //压缩文件,不同于之前的压缩工具,zip需要先写出压缩文件后的名字。
zip -r 123.zip 123 //压缩目录,不仅仅压缩目录,而且原来的目录不会删除
unzip 1.txt.zip //解压文件,如若在同一目录下压缩解压时会出现是否覆盖原文件的提示,因为压缩时源文件没有删除。
unzip 123.zip -d /tmp/456/ // 指定解压到/tmp/456目录下,解压时不可以指定为新的名字,会自动生成新的目录。也就是压缩前是什么文件名解压后就是什么名字。
unzip -l 123.zip //查看压缩包里文件的列表
[root@xie-02 zzz]# du -sh 1.txt
1.4M 1.txt
[root@xie-02 zzz]# zip 1.txt.zip 1.txt //压缩文件,源文件1.txt不会删除
adding: 1.txt (deflated 74%)
[root@xie-02 zzz]# du -sh 1.txt.zip
360K 1.txt.zip
[root@xie-02 zzz]# du -sh 123
1.4M 123
[root@xie-02 zzz]# zip -r 123.zip 123 //压缩目录
adding: 123/ (stored 0%)
adding: 123/2.txt (deflated 74%)
[root@xie-02 zzz]# du -sh 123.zip
360K 123.zip
[root@xie-02 zzz]# unzip 1.txt.zip //解压文件,在同一目录下压缩解压时会提示是否覆盖,A是全部覆盖
Archive: 1.txt.zip
replace 1.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
inflating: 1.txt
[root@xie-02 zzz]# unzip -l 123.zip //查看压缩包里文件列表
Archive: 123.zip
Length Date Time Name
--------- ---------- ----- ----
0 11-07-2017 13:12 123/
1391450 11-07-2017 13:12 123/2.txt
--------- -------
1391450 2 files
tar打包
tar 本身为一个打包工具,可以把目录打包成一个文件,它的好处是它把所有文件整合成一个大文件整体,方便拷贝或者移动。
-z : 同时用gzip压缩
-j : 同时用bzip2压缩
-x : 解包或者解压缩
-t : 查看tar包里面的文件
-c : 建立一个tar包或者压缩文件包
-v : 可视化
-f : 后面跟文件名,压缩时跟 “-f 文件名”,意思是压缩后的文件名为filename, 解压时跟 “-f 文件名”,意思是解压filename. 请注意,如果是多个参数组合的情况下带有 “-f”,请把 “-f” 写到最后面。
-p : 使用原文件的属性,压缩前什么属性压缩后还什么属性。
-P : 可以使用绝对路径。(不常用)
–exclude filename : 在打包或者压缩时,不要将filename文件包括在内。
tar -cvf 123.tar 123 //可视化打包压缩目录123后名字为123.tar
tar -cvf 123.tar 1.txt 123 //可视化打包压缩目录123和文件1.txt后名字为123.tar
tar -xvf 123.tar //可视化解包123.tar,解包时跟zip一样会覆盖原来的文件,但是不会提示是否覆盖。
tar -tf 123.tar //查看tar包里面的文件
tar -cvf 123.tar –exclude 1.txt –exclude 2 123 //打包目录123并命名123.tar,不包括文件1.txt和目录2。exclude可以写多个。
[root@xie-02 zzz]# tar -cvf 123.tar 123 //可视化打包压缩后名字为123.tar
123/
123/2.txt
[root@xie-02 zzz]# ls
123 123.tar 1.txt 2.txt
[root@xie-02 zzz]# du -sh 123 123.tar //打包后大小跟源文件一样,打包是打包,不同于压缩,区分清楚。
1.4M 123
1.4M 123.tar
[root@xie-02 zzz]# tar xvf 123.tar //解包时跟zip一样会覆盖原来的文件,但是不会提示是否覆盖。
123/
123/2.txt
[root@xie-02 zzz]# tar -tf 123.tar //查看tar包里面的文件
123/
123/2.txt
打包并压缩
tar命令非常好用的一个功能就是可以在打包的时候直接压缩,它支持gzip压缩,xz压缩和bzip2压缩。
tar -zcvf 123.tar.gz 123 //打包的同时使用gzip压缩
tar -zxvf 123.tar.gz //解包并解压缩
tar -jcvf 123.bz2 123 //打包的同时使用bzip2压缩
tar -jxvf 123.bz2 //解包并解压缩
tar -Jcvf 123.xz 123 //打包的同时使用xz压缩
tar -Jxvf 123.xz //解包并解压缩
tar -tf 123.bz2 //查看压缩包里的文件 tar -tf 123.gz //查看压缩包里的文件 tar -tf 123.xz //查看压缩包里的文件
[root@xie-02 zzz]# tar -zcvf 123.tar.gz 123 1.txt 2.txt //打包的同时使用gzip压缩
123/
123/2.txt
1.txt
2.txt
[root@xie-02 zzz]# du -sh 123.tar.gz
1.1M 123.tar.gz
[root@xie-02 zzz]# tar -jcvf 123.tar.bz2 123 1.txt 2.txt //打包的同时使用bzip2压缩
123/
123/2.txt
1.txt
2.txt
[root@xie-02 zzz]# du -sh 123.tar.bz2
460K 123.tar.bz2
[root@xie-02 zzz]# tar -Jcvf 123.tar.xz 123 1.txt 2.txt //打包的同时使用xz压缩
123/
123/2.txt
1.txt
2.txt
[root@xie-02 zzz]# du -sh 123.tar.xz
68K 123.tar.xz
[root@xie-02 zzz]# tar -tf 123.tar.xz //查看压缩包里的文件
123/
123/2.txt
1.txt
2.txt
实际应用:
利用tar 通过网络拷贝数据 http://www.lishiming.net/thread-152-1-2.html Tar打包、压缩与解压缩到指定目录的方法 http://www.lishiming.net/thread-96-1-3.html linux下不支持解压大于4G的zip压缩包 http://www.lishiming.net/thread-1813-1-1.html
扩展
http://ask.apelearn.com/question/5435
- Linq Like的操作
- iOS网络——AFNetworking AFURLSessionManager源码解析
- 1692: [Usaco2007 Dec]队列变换(BZOJ1640强化版)
- 1620: [Usaco2008 Nov]Time Management 时间管理
- 手把手教你树莓派linux内核如何编译
- js处理异常try{}catch(e){}
- 1634: [Usaco2007 Jan]Protecting the Flowers 护花
- C#用链式方法表达循环嵌套1
- C#用链式方法表达循环嵌套2
- 【开源】1句代码搞定图片批量上传,无需什么代码功底【无语言界限】
- C#异步调用的方法
- 【David Silver 深度强化学习教程代码实战07】 DQN的实现
- AutoMapper随笔记
- 简析.NET Core 以及与 .NET Framework的关系
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 浅析centos 7 自带的 php 5.4升级为 5.6的方法
- Linux内核设备驱动地址映射笔记整理
- Linux中的who命令实例介绍
- Linux十个新手命令分享
- Linux 内核通用链表学习小结
- 从零开始针对 .NET 应用的 DevOps 运营实践 - 运行环境搭建
- 面试问我,创建多少个线程合适?我该怎么说
- C语言链表实例--玩转链表
- 帝国CMS怎么利用灵动标签循环调用多个栏目下的文章
- PHP 加密 Password Hashing API基础知识点
- php libevent 功能与使用方法详解
- 对Python3中bytes和HexStr之间的转换详解
- 用python代码将tiff图片存储到jpg的方法
- php下的原生ajax请求用法实例分析
- php 中的信号处理操作实例详解