Linux上的压缩与归档
非常非常非常简要的描述而已。
压缩
压缩的简要原理是通过一些算法,拿CPU的计算时间去换磁盘上存储的空间。同时还可节省网络传输中的带宽。
对于文本文件的压缩效果比较好,对二进制程序、图片等文件的压缩效果就很差。
compress, uncompress
文件名:*.Z
古老的压缩工具,目前已经不使用。
gzip, gunzip, zcat
文件名:*.gz
gzip用于压缩文件,简要语法。
# gzip [OPTION] FILE...
FILE是待压缩的文件名,可多个。
[root@C7 tmp]# ls -l
total
-rw-r--r--. root root Jan functions
-rw-r--r-- root root Apr : lvm_mount_point.xfsdump
-rw------- root root Apr : messages
[root@C7 tmp]# gzip functions lvm_mount_point.xfsdump messages
[root@C7 tmp]# ls -l
total
-rw-r--r-- root root Jan functions.gz
-rw-r--r-- root root Apr : lvm_mount_point.xfsdump.gz
-rw------- root root Apr : messages.gz
压缩后,会自动删除源文件,并生成.gz名称的压缩文件。
-d:用于解压缩。等同于gunzip命令。
[root@C7 tmp]# gzip -d functions.gz
[root@C7 tmp]# gunzip functions.gz
同理,解压后,压缩文件消失,压缩前的源文件生成。
-# --fast --best:“#”表示一个数字,取值为1~9,表示压缩的效果。1表示最快--fast,9表示最好--best。默认是6。
-c:表示将压缩后的数据流输出到STDOUT,不会修改源文件。结合重定向可以实现压缩文件时不删除源文件。
[root@C7 tmp]# ls -l functions*
-rw-r--r-- root root Jan functions
[root@C7 tmp]# gzip -c functions > functions.gz
[root@C7 tmp]# ls -l functions*
-rw-r--r-- root root Jan functions
-rw-r--r-- root root Apr : functions.gz
对于文本文件压缩后的文件,是无法使用诸如cat等文本查看器直接查看了,想基于压缩文件查看的话,可使用zcat。
[root@C7 tmp]# zcat functions.gz | tail
"x$1" = xcondrestart ] ; then systemctl_redirect $ $
exit $?
fi
fi strstr "$(cat /proc/cmdline)" "rc.debug" && set -x
return
bzip2, bunzip2, bzcat
文件名:*.bz2
命令功能与用法等同于gzip系列。
在gzip中想要在压缩的时候保留源文件,需要通过-c选项结合重定向,而在bzip2中,可直接通过-k选项。
-k --keep:压缩时,不删除源文件。
[root@C7 tmp]# bzip2 -k lvm_mount_point.xfsdump
[root@C7 tmp]# ls -l lvm_mount_point.xfsdump*
-rw-r--r-- root root Apr : lvm_mount_point.xfsdump
-rw-r--r-- root root Apr : lvm_mount_point.xfsdump.bz2
xz, unxz, xzcat
文件名:*.xz
命令功能与用法等同于bzip2系列。含-k选项。
压缩小结
压缩效果:xz>bzip2>gzip。
可通过file命令查看压缩文件的实际/内部格式,不可以仅通过文件的扩展名来判断一个文件的类型,扩展名仅作为用户识别。
[root@C7 tmp]# file functions.gz lvm_mount_point.xfsdump.bz2 messages.xz
functions.gz: gzip compressed data, was "functions", from Unix, last modified: Wed Jan ::
lvm_mount_point.xfsdump.bz2: bzip2 compressed data, block size = 900k
messages.xz: XZ compressed data
归档
上述的压缩命令,是无法实现将多个文件合并压缩为一个压缩文件,或者针对目录进行压缩的。
[root@C7 tmp]# file init.d/
init.d/: directory
[root@C7 tmp]# gzip init.d/
gzip: init.d/ is a directory -- ignored
[root@C7 tmp]# bzip2 init.d/
bzip2: Input file init.d/ is a directory.
[root@C7 tmp]# xz init.d/
xz: init.d/: Is a directory, skipping
想实现该需求,就需要归档。
归档的作用是可以将多个文件/目录合并为一个档案文件(archive),即类似于Windows上的WinRAR的打包操作。
归档工具有两种,cpio和tar,前者是比较古老的命令,已逐渐被后者所取代,因此本文简述一下后者的使用即可。
创建档案
档案文件名:*.tar、*.tar.gz、*.tar.bz2、*.tar.xz
# tar -c[zjJ]f ARCH_FILE FILE...
-c:表示创建档案。
-f:指定档案文件名(ARCH_FILE),后面必须跟上档案文件名,否则报错。例如“-fc”会报错。
FILE:待归档文件/目录。
在归档的时候,可以指定压缩。tar的压缩本质上是调用了上文所说到的压缩工具,而不是它本身就具备了压缩的能力。
-z:使用gzip压缩。
-j:使用bzip2压缩。
-J:使用xz压缩。
[root@C7 tmp]# tar -czf test.tar.gz functions init.d/ lvm_mount_point.xfsdump messages
[root@C7 tmp]# file test.tar.gz
test.tar.gz: gzip compressed data, from Unix, last modified: Tue Apr ::
归档操作不会删除源文件。因此归档压缩后,源文件“functions init.d/ lvm_mount_point.xfsdump messages”还存在。
展开档案
# tar -xf ARCH_FILE [-C EXTRACT_DIR]
tar展开归档,会自动覆盖已有文件。不需要指定原压缩格式,tar会自动识别。
[root@C7 tmp]# rm -rf functions lvm_mount_point.xfsdump messages init.d/
[root@C7 tmp]# tar -xf test.tar.gz
[root@C7 tmp]# ls -ld functions lvm_mount_point.xfsdump messages init.d/
-rw-r--r-- root root Jan functions
drwxr-xr-x root root Apr : init.d/
-rw-r--r-- root root Apr : lvm_mount_point.xfsdump
-rw------- root root Apr : messages
-C EXTRACT_DIR:用于指定归档展开的路径,默认不指定的话,是在当前目录下。
[root@C7 tmp]# mkdir new_dir
[root@C7 tmp]# tar -xf test.tar.gz -C new_dir/
[root@C7 tmp]# ls -l new_dir/
total
-rw-r--r-- root root Jan functions
drwxr-xr-x root root Apr : init.d
-rw-r--r-- root root Apr : lvm_mount_point.xfsdump
-rw------- root root Apr : messages
查看档案
# tar -tf ARCH_FILE
[root@C7 tmp]# tar -tf test.tar.gz
functions
init.d/
init.d/README
init.d/functions
init.d/netconsole
init.d/network
lvm_mount_point.xfsdump
messages
Linux上的压缩与归档的更多相关文章
- Linux下的压缩及归档
Linux下常用的压缩格式有: gz,bz2,xz,zip,Z //只能压缩文件不能压缩目录,如果传递一个目录,他会把目录中的文件逐个压缩 ..压缩算法:算法不同,压缩比也不同 gz:gzip,压缩后 ...
- linux命令之压缩与归档
1. gzip:压缩工具 语法·:gzip [选项](参数) 命令说明:运用广泛的压缩程序,文件经它压缩后,其名称后面以“.gz”扩展名 常用命令选项: -N:压缩文件后,保留文件的原文件名和时间 ...
- Linux - 文件的压缩与归档
文件压缩 常用的压缩命令有 gzip.bzip2 等. gzip 命令 命令格式 gzip [ -acdfhlLnNrtvV19 ] [-S suffix] [ name ... ] 命令参数 -c ...
- 常见压缩格式分析,及 Linux 下的压缩相关指令
可先浏览加粗部分 一.常见压缩档 *.zip | zip 程式壓縮打包的檔案: (很常见,但是因为不包含文件名编码信息,跨平台可能会乱码) *.rar | winrar 程序压缩打包的档案:(在win ...
- Linux 文件压缩与归档
.note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...
- linux专题一之文件归档和压缩(tar、file、zip)
本文主要从以下几个方便来说明文件的归档和压缩,同时比较几种不同压缩方法的压缩比率及特点. 文件归档命令tar,tar.gz源码包的安装管理 创建tar包-解压-查询tar包内容 zip命令的用法 为 ...
- Linux编程 8 (挂载mount,查看磁盘df du,搜索grep,压缩zgip,归档tar)
一. 挂载存储媒体 linux文件系统将所有的磁盘都并入一个虚拟目录下,当使用新的存储媒体之前,需要把它放到虚拟目录下,这项工作称为挂载(mounting) 1.1 mount 命令 在linux上用 ...
- Linux 如何使用压缩与解压缩的方式将Windows下的zip压缩包上传到Linux系统
当我们无法使用xftp方式上传文件到Linux系统时,我们可以使用在Windows下压缩文件夹,然后到Linux系统下解压缩的方式,完成整个上传工作. 第一步:在Windows系统下,将整个文件夹压缩 ...
- linux 上传scp 压缩tar命令
1.Linux 上传scp 1)上传文件与文件夹 scp file weblogic@xx.xxx.xxx.xxx:~/songjd/ scp -r filefolder weblogic@xxx.x ...
随机推荐
- Python 3.5安装 pymysql 模块
原文链接: http://www.maiziedu.com/article/8272/ 事情是这样的,使用python3.4,django1.8,mysql5.5搭建一个web开发环境,由于pytho ...
- ActiveMQ安装与入门程序 & JMS的消息结构
1.Activemq安装 直接到官网下载:记住apache的官网是域名反过来,比如我们找activemq就是activemq.apache.org. 最新版本要求最低的JDK是8,所以最好在电脑装多个 ...
- 【tomcat】Web环境(tomcat)下新增一个访问路径(虚拟路径)
在tomcat上配置图片虚拟目录,在tomcat下conf/server.xml中添加:(在server.xml最好不要添加中文注释,在有些操作系统会启动失败) <Context docBase ...
- Java并发编程--并发容器之Collections
在JDK1.2之前同步容器类包括Vector.Hashtable,这两个容器通过内置锁synchronized保证了同步.后面的ArrayList.LinkedList.HashMap.LinkedH ...
- SANS社区邮件情报收集【2018-12-4到2019-1-19】
情报来源:注册SANS社区帐号,它提示是否接收邮件咨询等信息,肯定要接收.耳朵听不到东西,天才都变成傻子. 信息点:1.全世界安全员使用它,有培训和免费资源.2.可选择性接收特别网络安全课程,峰会和事 ...
- jquery开发自定义的插件总结
1.第一种方式,有元素的插件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...
- 中间人攻击之ettercap嗅探
中间人攻击: 中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”)是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的 ...
- Python之matplotlib库学习
matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备, ...
- C++ virtual函数重写,在继承的时候没有在函数前写virtual关键字也依然是虚函数吗?
比如: class Base { Base() {}; ~Base() {}; virtual void Init(); }; class Derived:public Base { virtual ...
- 转载:编译安装Nginx(1.5.1)《深入理解Nginx》(陶辉)
原文:https://book.2cto.com/201304/19618.html 1.5 configure详解 可以看出,configure命令至关重要,下文将详细介绍如何使用configure ...