[拾 得] zip gzip bzip2 & tar 压缩/打包 四大金刚
- 介绍压缩和打包
- gzip bzip2 zip 的基本使用
- gzip bzip2打包文件 需要 tar 的支援
- 同一文件使用不同压缩工具的比较
- 对zip gzip bzip2 信息总结
- 能够完成文件的压缩和解压的基本操作
- 能够明白压缩和打包的概念
- 对于选择何种压缩命令有初步认识
- 涉及命令 : zip(unzip), gzip, bzip2, tar, dd, time, tree
- 介绍压缩和打包
- zip gzip bzip2 的基本使用
- 压缩文件
- 解压(指定路径)zip压缩文件
- 查看文件情况, 验证文件完整性
- 压缩文件夹
- 指定文件解压
- 删除zip压缩文件中的文件
- 增加指定文件到 zip压缩文件中
> ########################################################
> # 使用zip压缩文件 zip 命令后添加 压缩后文件的名字, 约定成俗的习惯是 .zip 后跟需要压缩的文件
> # zip file.zip file > ls
dir video.mp4
> zip video.mp4.zip video.mp4
adding: video.mp4 (deflated %)
> ls
dir video.mp4 video.mp4.zip #########################################################
> # 解压zip 文件 , 解压后 原压缩包 不会被删除
> # 解压zip 文件, 指定解压路径 > ls
dir video.mp4.zip
> unzip video.mp4.zip
Archive: video.mp4.zip
inflating: video.mp4
> ls
dir video.mp4 video.mp4.zip
> unzip video.mp4.zip -d dir/
Archive: video.mp4.zip
inflating: dir/video.mp4
> ls dir/video.mp4
dir/video.mp4
> > #########################################################
> # 使用 unzip -v 查看 zip 压缩文件中的文件, 但不解压文件 > unzip -v video.mp4.zip
Archive: video.mp4.zip
Length Method Size Cmpr Date Time CRC- Name
-------- ------ ------- ---- ---------- ----- -------- ----
Defl:N % -- : 2a0e7dbb video.mp4
-------- ------- --- -------
% file
> # 使用unzip -t 选项 查看 zip 压缩文件 是否有损坏 > unzip -t video.mp4.zip
Archive: video.mp4.zip
testing: video.mp4 OK
No errors detected in compressed data of video.mp4.zip. > #########################################################
> # 使用 unzip -r 递归压缩 压缩文件夹(dir/) > ls
dir video.mp4
> zip -r compress.zip dir/ video.mp4
adding: dir/ (stored %)
adding: dir/file2 (stored %)
adding: dir/file1 (stored %)
adding: video.mp4 (deflated %) > #########################################################
> # 查看 zip 压缩文件中的文件, 创建一个 another_dir
> # 使用 unzip [zip压缩文件] [需要解压的文件] -d [解压文件到指定的目录]
> # 实现指定解压zip文件中指定文件 > unzip -v compress.zip
Archive: compress.zip
Length Method Size Cmpr Date Time CRC- Name
-------- ------ ------- ---- ---------- ----- -------- ----
Stored % -- : dir/
Stored % -- : b9bb280c dir/file2
Stored % -- : b9bb280c dir/file1
Defl:N % -- : 2a0e7dbb video.mp4
-------- ------- --- -------
% files
> mkdir another_dir
> ls -F
another_dir/ compress.zip dir/ video.mp4
> unzip compress.zip dir/file1 -d another_dir/
Archive: compress.zip
extracting: another_dir/dir/file1
> ls -l another_dir/dir/file1
-rw-r--r-- root root Oct : another_dir/dir/file1 > #########################################################
> # 在无需解压的情况下, 删除相关的文件
> # zip [需要操作的zip文件] -d [需要删除的文件] > unzip -v compress.zip
Archive: compress.zip
Length Method Size Cmpr Date Time CRC- Name
-------- ------ ------- ---- ---------- ----- -------- ----
Stored % -- : dir/
Stored % -- : b9bb280c dir/file2
Stored % -- : b9bb280c dir/file1
Defl:N % -- : 2a0e7dbb video.mp4
-------- ------- --- -------
% files
> zip compress.zip -d dir/file2
deleting: dir/file2
> unzip -v compress.zip
Archive: compress.zip
Length Method Size Cmpr Date Time CRC- Name
-------- ------ ------- ---- ---------- ----- -------- ----
Stored % -- : dir/
Stored % -- : b9bb280c dir/file1
Defl:N % -- : 2a0e7dbb video.mp4
-------- ------- --- -------
% files > #########################################################
> # 添加新的文件到 zip 压缩文件中
> # zip [需要操作的zip文件] -g [需要添加的文件] > zip -g compress.zip dir/file2
adding: dir/file2 (stored %)
> unzip -v compress.zip
Archive: compress.zip
Length Method Size Cmpr Date Time CRC- Name
-------- ------ ------- ---- ---------- ----- -------- ----
Stored % -- : dir/
Stored % -- : b9bb280c dir/file1
Defl:N % -- : 2a0e7dbb video.mp4
Stored % -- : b9bb280c dir/file2
-------- ------- --- -------
% files
- 压缩文件 , 和保留原文件压缩
- 解压(指定路径)gzip压缩文件 , 和保留原文件压缩
- 查看文件情况, 验证文件完整性
> #########################################################
> # 使用gzip 压缩文件,自动为文件添加后缀 .gz 不保留原文件
> # gzip <需要压缩的文件> > ls -F
dir/ video.mp4
> gzip video.mp4
> ls -F
dir/ video.mp4.gz > # # # # # # # # # # # #
> # 使用 gzip 压缩文件, 保留原文件
> # 这里使用的是重定向方式 , 借此保留了原文件
> # gzip -c <需要压缩的文件> > <压缩后文件的名字> > ls -F
dir/ video.mp4
> gzip -c video.mp4 > video.mp4.gz
> ls -F
dir/ video.mp4 video.mp4.gz > #########################################################
> # 使用gzip 解压文件 , 命令 gzip -d (decompose) <需要解压的文件>
> # 解压后原文件会消失 > ls -F
dir/ video.mp4.gz
> gzip -d video.mp4.gz
> ls -F
dir/ video.mp4 > # # # # # # # # # # # #
> # 使用 gzip 解压文件, 命令 gzip -cd <需要解压的文件> > <解压后文件的命名>
> # 保留原文件 > ls -lh
total 260K
drwxr-xr-x root root .0K Oct : dir
-rw-r--r-- root root 255K Oct : video.mp4.gz
> gzip -cd video.mp4.gz > video.mp4
> ls -lh
total 257M
drwxr-xr-x root root .0K Oct : dir
-rw-r--r-- root root 256M Oct : video.mp4
-rw-r--r-- root root 255K Oct : video.mp4.gz > #########################################################
> # 查看压缩文件相关信息 gzip -l <需要查看的压缩文件>
> # 测试压缩文件的完整性 gzip -t <需要验证的压缩文件> > gzip -l video.mp4.gz
compressed uncompressed ratio uncompressed_name
99.9% video.mp4
> gzip -t video.mp4.gz
> echo $?
- 压缩文件 , 和保留原文件压缩
- 解压(指定路径)bzip压缩文件 , 和保留原文件压缩
- 查看文件情况, 验证文件完整性
> #########################################################
> # 使用bzip2 压缩文件,自动为文件添加后缀 .bz 不保留原文件
> # bzip2 <需要压缩的文件> > ls -F
dir/ video.mp4
> bzip2 video.mp4
> ls -F
dir/ video.mp4.bz2 > # # # # # # # # # # # #
> # 使用 -k (keep) 解压文件, 保留原文件
> # bzip2 -k <需要压缩的文件> > ls -F
dir/ video.mp4
> bzip2 -k video.mp4
> ls -F
dir/ video.mp4 video.mp4.bz2 > #########################################################
> # 使用bzip2 解压文件 , 命令 bzip2 -d (decompose) <需要解压的文件>
> # 解压后原文件会消失 > ls -F
dir/ video.mp4.bz2
> bzip2 -d video.mp4.bz2
> ls -F
dir/ video.mp4 > # # # # # # # # # # # #
> # 使用 gzip 解压文件, 命令 bzip2 -k <需要解压的文件>
> # 保留原文件 > ls -F
dir/ video.mp4.bz2
> bzip2 -dk video.mp4.bz2
> ls -F
dir/ video.mp4 video.mp4.bz2 > #########################################################
> # 查看压缩文件相关信息 bzcat <需要查看的压缩文件>
> # 测试压缩文件的完整性 bzip2 -t <需要验证的压缩文件> > cat file1
This is a file.
> bzip2 -k file1
> bzcat file1.bz2
This is a file.
> > bzip2 -t video.mp4.bz2
> echo $?
- gzip bzip2打包文件 需要 tar 的支援
> # 使用 tar 进行打包 -c 创建一个打包文件
> # 值得关注的是 命令执行后 打包的原始文件(../dir/file1 和 ../dir/file2)是不会消失的
> # tar -cf <打包后的文件名.tar> <需要打包的文件> ... <需要打包的文件> > ls
dir video.mp4
> tree dir/
dir/
├── file1
└── file2
directories, files
> tar -cf dir.tar dir/file1 dir/file2
> ls
dir dir.tar video.mp4
> > # 显示打包后的文件 -t 显示打包文件中的信息
> # tar -tf <需要查看的打包文件.tar> > tar -tf dir.tar
dir/file1
dir/file2 > # 如果希望得到更加详细的信息(权限,用户,用户组,修改时间mtime), 可以加上 -v 选项
> # tar -tvf <需要查看的打包文件.tar> > tar -tvvf dir.tar
-rw-r--r-- root/root -- : dir/file1
-rw-r--r-- root/root -- : dir/file2 > # 在原有的打包文件中,追加文件 -r 追加文件到打包文件中
> # 值得关注的是 命令执行后 追加的文件(video.mp4)是不会消失的
> # tar -rvf <需要追加的文件> <存在的打包文件.tar> > tar -rvf dir.tar video.mp4
video.mp4
> tar -tf dir.tar
dir/file1
dir/file2
video.mp4 > # 在打包文件中 提取指定文件 -x 提取文件
> # tar -xf <打包文件.tar> <在打包文件中需要提取的文件> > ls -F
dir/ dir.tar
> tar -tf dir.tar
dir/file1
dir/file2
video.mp4
> tar -xf dir.tar video.mp4
> ls -F
dir/ dir.tar video.mp4 > # 指定存取目录, 将打包文件提取到该路径下 -C /PATH/TO/SOMEDIR
> # 值得注意的是, 指定的存取路径下文件夹必须存在
> # tar -xf <打包的文件.tar> -C /存取/的/目录 > ls -F
another_dir/ dir/ dir.tar video.mp4
> tar -xf dir.tar -C another_dir
> tree another_dir/
another_dir/
├── dir
│ ├── file1
│ └── file2
└── video.mp4
directory, files > # 将两个打包文件进行合并
> # 值得注意的是,放在前面的合并文件, 将会成为合并后的文件(包含了自己内容和被合并文件的内容)
> # 被合并的文件在合并后, 不会小时
> # tar -Af <合并后的文件/合并的打包文件.tar> <被合并的打包文件2.tar> > ls -F
dir/ dir.tar video.mp4 video.tar
> tar -tf dir.tar
dir/file1
dir/file2
> tar -tf video.tar
video.mp4
> tar -Af dir.tar video.tar
> tar -tf dir.tar
dir/file1
dir/file2
video.mp4
> ls -F
dir/ dir.tar video.mp4 video.tar
> tar -tf video.tar
video.mp4 > # 删除打包文件中的指定文件 --delete
> # tar --delete --file <包含删除文件的打包文件.tar> <需要删除的文件> .. <需要删除的文件>
> # tar -f <包含删除文件的打包文件.tar> --delete <需要删除的文件> .. <需要删除的文件> > # 方法一
> tar -tf dir.tar
dir/file1
dir/file2
> tar --delete --file dir.tar dir/file1
> tar -tf dir.tar
dir/file2
> > # 方法二
> tar -tf dir.tar
dir/file1
dir/file2
> tar -f dir.tar --delete dir/file1
> tar -tf dir.tar
dir/file2
> # # # # # # # # # # # # # # # # # # # # # # # # # #
# 这里插播一下 , 如果仅仅对数据进行打包处理
# 我们的文件大小是不会减少的
# 反倒会增加文件的大小 > ls
dir video.mp4
> tar -cf dir.tar dir/*
> tar -cf video.tar video.mp4
> ls -lh
total 513M
drwxr-xr-x 2 root root 4.0K Oct 3 10:14 dir
-rw-r--r-- 1 root root 20K Oct 3 11:33 dir.tar
-rw-r--r-- 1 root root 256M Oct 3 10:39 video.mp4
-rw-r--r-- 1 root root 257M Oct 3 11:34 video.tar
> # 因此我们的打包 一般需要和压缩一起进行使用
# # # # # # # # # # # # # # # # # # # # # # # # # #
# > 打包的同时,使用gzip 进行文件压缩 -z(gzip)
# > 完成后,文件不消失
# > tar -zcvf <打包压缩后文件.tar.gz> <需要操作的文件目录/文件> > ls -F
dir/ video.mp4
> tar -zcvf dir.tar.gz dir/
dir/
dir/file2
dir/file1
> ls -F
dir/ dir.tar.gz video.mp4
> tar -tf dir.tar.gz
dir/
dir/file2
dir/file1
> # > 解压 tar 包的文件 -x , 如需指定命令 同样 -C /path/to/some_dir
# > tar -zxvf <需要解压的文件.tar.gz> > ls -F
dir.tar.gz video.mp4
> tar -zxvf dir.tar.gz
dir/
dir/file2
dir/file1
> ls -F
dir/ dir.tar.gz video.mp4
> tree dir/
dir/
├── file1
└── file2
directories, files
> # > 打包的同时,使用bzip2 进行文件压缩 -j(bzip2)
# > 完成后,文件不消失
# > tar -jcvf <打包压缩后文件.tar.bz2> <需要操作的文件目录/文件> > ls -F
dir/ video.mp4
> tar -jcvf dir.tar.bz2 dir/
dir/
dir/file2
dir/file1
> tar -tf dir.tar.bz2
dir/
dir/file2
dir/file1 # > 解压 tar 包的文件 -x , 如需指定命令 同样 -C /path/to/some_dir
# > tar -jxvf <需要解压的文件.tar.bz2> > ls -F
dir.tar.bz2 video.mp4
> tar -jxvf dir.tar.bz2
dir/
dir/file2
dir/file1
> ls -F
dir/ dir.tar.bz2 video.mp4
> tree dir/
dir/
├── file1
└── file2
directories, files
- 同一文件使用不同压缩工具的比较
# > 我们在这里模拟创建一些文件, 使测试目录的大小为1.2G > dd if=/dev/zero of=file_5M bs=1M count=
+ records in
+ records out
bytes (5.2 MB) copied, 0.00330545 s, 1.6 GB/s
> dd if=/dev/zero of=file_10M bs=1M count=
+ records in
+ records out
bytes ( MB) copied, 0.00722154 s, 1.5 GB/s
> dd if=/dev/zero of=file_50M bs=1M count=
+ records in
+ records out
bytes ( MB) copied, 0.100913 s, MB/s
> dd if=/dev/zero of=file_100M bs=1M count=
+ records in
+ records out
bytes ( MB) copied, 0.205377 s, MB/s
>
> dd if=/dev/zero of=file_1000M bs=1M count=
+ records in
+ records out
bytes (1.0 GB) copied, 11.5899 s, 90.5 MB/s
>
> ls -lh
total .2G
-rw-r--r-- root root 10K Oct : file1
-rw-r--r-- root root 1000M Oct : file_1000M
-rw-r--r-- root root 100M Oct : file_100M
-rw-r--r-- root root 10M Oct : file_10M
-rw-r--r-- root root Oct : file2
-rw-r--r-- root root 50M Oct : file_50M
-rw-r--r-- root root 5.0M Oct : file_5M
> > # 先使用 zip 做测试
> time zip -r compress.zip dir/
adding: dir/ (stored %)
adding: dir/file2 (stored %)
adding: dir/file_5M (deflated %)
adding: dir/file_50M (deflated %)
adding: dir/file_100M (deflated %)
adding: dir/file_10M (deflated %)
adding: dir/file_1000M (deflated %)
adding: dir/file1 (deflated %)
real 0m16.237s
user 0m3.588s
sys 0m5.380s > # 接着是 gzip
> time tar -zcvf compress.tar.gz dir/
dir/
dir/file2
dir/file_5M
dir/file_50M
dir/file_100M
dir/file_10M
dir/file_1000M
dir/file1
real 0m16.242s
user 0m7.764s
sys 0m1.956s > # 最后是 bzip2
> time tar -jcvf compress.tar.bz2 dir/
dir/
dir/file2
dir/file_5M
dir/file_50M
dir/file_100M
dir/file_10M
dir/file_1000M
dir/file1
real 0m28.010s
user 0m16.940s
sys 0m2.137s
> # 我们再查看各个压缩文件的大小
> ls -l compress.*
-rw-r--r-- root root Oct : compress.tar.bz2
-rw-r--r-- root root Oct : compress.tar.gz
-rw-r--r-- root root Oct : compress.zip
> ls -lh compress.*
-rw-r--r-- root root .5K Oct : compress.tar.bz2
-rw-r--r-- root root 1.2M Oct : compress.tar.gz
-rw-r--r-- root root 1.2M Oct : compress.zip
压缩/打包压缩命令 | 压缩的工具(版本号) | 所花费的时间 |
文件的大小
|
zip -r compress.zip dir/
|
zip (3.0)
|
16.237s
|
1186932(1.2M)
|
tar -zcvf compress.tar.gz dir/
|
gzip (1.3.12)
|
16.242s
|
1186140(1.2M)
|
tar -jcvf compress.tar.bz2 dir/
|
bzip2 (1.0.5)
|
28.010s
|
1434 (1.5K)
|
测试系统 2.6.32-696.6.3.e16.i686 / CentOS release 6.9(Final) |
- 对zip gzip bzip2 信息总结
命令工具
|
压缩文件公式
|
压缩后原文件是否保留
(保留命令公式)
|
解压文件公式
|
解压后原文件是否保留
(保留命令公式)
|
查看压缩文件内文件
|
zip
|
zip2 [file_need_compress]
|
保留
|
unzip [file_suffix.tar]
|
保留
|
unzip -v [file_suffix.tar]
|
gzip
|
gzip [file_need_compress]
|
不保留
gzip -c [file_need_compress] > [file_suffix.gz]
|
gzip -d [file_suffix.gz]
|
不保留
gzip -cd [file_suffix.gz] > [file_name]
|
gzip -l [file_suffix.gz]
|
bzip2
|
bzip2 [file_need_compress]
|
不保留
bzip2 -k [file_need_compress]
|
bzip2 -d [file_suffix.bz2]
|
不保留
bzip2 -dk [file_suffix.bz2]
|
bzcat [file_suffix.bz2]
可查看文件的内容
|
命令工具 |
压缩目录
|
解压文件 |
查看文件
|
gzip
|
tar -zcvf [file_suffix.tar.gz] [file_need_compress&archive]
|
tar -zxvf [file_suffix.tar.gz]
|
tar -tf [file_suffix.tar.gz]
|
bzip2
|
tar -jcvf [file_suffix.tar.bz2] [file_need_compress&archive]
|
tar -zxvf [file_suffix.tar.bz2]
|
tar -tf [file_suffix.tar.bz2]
|
[拾 得] zip gzip bzip2 & tar 压缩/打包 四大金刚的更多相关文章
- (转)linux下压缩和归档相关命令tar,zip,gzip,bzip2
压缩包也有两种形式,一种是tar.gz包(.tgz包也是这种),一种是tar.bz2包. tar.gz包的解压方法:tar zxvf [PackageName].tar.gz tar.bz2包的解压方 ...
- [转]gzip,bzip2,tar,zip命令使用方法详解
原文:http://blog.chinaunix.net/uid-20779720-id-2547669.html 1 gzipgzip(1) 是GNU的压缩程序.它只对单个文件进行压缩.基本用法如下 ...
- linux zip tar 压缩打包命令
zip 压缩命令:(可压缩文件或目录) 压缩文件: zip new_name.zip file_name unzip name.zip 解压 压缩文件或目录: 指定解压位置: unzip na ...
- [CentOS7] gzip, bzip2, xz 压缩与解压缩
声明:本文主要总结自:鸟哥的Linux私房菜-第八章.檔案與檔案系統的壓縮,打包與備份,如有侵权,请通知博主 gzip命令: 选项参数: -c :将压缩后的数据显示到屏幕上,可以用于重定向: -d : ...
- 压缩与解压缩 gzip bzip2 tar 命令
gzip压缩与解压缩 命令 gzip -v 解压缩 gzip-d 操作如下. 压缩 .可以看到源文件有5171大小,压缩后,变成了1998大小. 解压缩 .解压缩之后可以看到,原来的man_db ...
- tar压缩打包实用命令总结
一.tar常用命令参数 用法:tar [参数] [文件] -v 显示指令执行过程 -c 创建压缩文件 -x 解压文件 -z 通过gzip指令处理文件 -f 指定文件 -C 解压文件到指定目录 -t - ...
- tar 压缩归档
压缩归档 掌握归档的定义:归档(archiving)就是将许多文件(或目录)打包成一个文件. 了解归档的目的:归档的目的就是方便备份.还原及文件的传输操作. 掌握tar命令的功能:将多个文件(也可能包 ...
- Linux中常用压缩打包工具
Linux中常用压缩打包工具 压缩打包是常用的功能,在linux中目前常用的压缩工具有gzip,bzip2以及后起之秀xz.本文将介绍如下的工具常见压缩.解压缩工具以及打包工具tar. gzip2 直 ...
- centos 文档的压缩和打包 gzip,bzip2,xz,zip,unzip,tar,tgz 第九节课
centos 文档的压缩和打包 gzip,bzip2,xz,zip,unzip,tar,tgz 第九节课 SAS盘可以支持热插拔,看机器 tar.zip.tar -czvf 不会动源文件,gz ...
随机推荐
- HY.Mail:C#简单、易用的邮件工具库
一.开发HY.Mail的初衷 Nuget或者github上有很多成熟且优秀的邮件库可以使用, 但是目前找到的使用都不够简洁或者不适合我的使用场景 我的场景是开发应用场景(例如系统通知.运维通知),而非 ...
- Head First设计模式之迭代器模式
一.定义 提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示: 主要解决:不同的方式来遍历整个整合对象. 何时使用:遍历一个聚合对象. 如何解决:把在元素之间游走的责任交给迭代 ...
- Python新手需要掌握的知识点
一.基础语法 1 变量 2 逻辑判断 3 循环 4 函数 二.数据结构 1 数字(加减乘除) 2 字符串(一串字符) 3 布尔 (真假) 4 元组 (不能修改的列表) 5 列表(Python的苦力,最 ...
- java基础只关键字final
final关键字简述 final关键字是在编写java程序中出现频率和很高的关键字,如果想要更好的编写java程序,那么掌握final关键字的运用是非常必要的.让我们先看一下final关键字可以修饰的 ...
- CentOS7下安装MySQL并配置远程连接
一.CentOS7下安装MySQL数据库 CentOS7默认的安装包里面已经没有 MySQL-Server安装包了,远程镜像中也没有了. 默认的是MariaDB (MySQL的一个分支,开发这个分支的 ...
- 移动端H5页面惯性滑动监听
移动端H5页面惯性滑动监听 在移动端,当你快速滑动有滚动条的页面时,当你手指离开屏幕时,滚动条并不会立即停止,而是会随着"惯性"继续滑动一段距离. 在做项目的过程中,需要监听惯性滑 ...
- 用grant命令为用户赋权限以后,登录时,出现:ERROR 1045 (28000)
ERROR 1045(28000)信息是因为权限的问题.这个ERROR分为两种情况: 第一种: ERROR 1045 (28000): Access denied for user 'root'@'l ...
- PyQt4中的Treeview
import sys from PyQt4 import QtCore, QtGui from qyolk import Ui_QYolk from yolk import yolklib class ...
- 掌握一门语言Go
摘要:Go语言的优势不必多说,通过本篇文章,让我们花时间来掌握一门外语,Let's Go! 关键字:Go语言,闭包,基本语法,函数与方法,指针,slice,defer,channel,goroutin ...
- centos下安装最新版本git(通过master分支下载最新版)
centos6.7下安装最新版本git 本文参考:http://www.01happy.com/centos-install-latest-git/ 按照原博主所提供的思路安装可能会出现下列问题 解决 ...