一 压缩文件的用途和技术
原理有很多,也很有意思比如:
计算机系统中用字节进行计数,但其实最小的单位应该是位。当我们存储一个数字 1 时,我们会存储 为00000001;
也许数据为连续一百个 1 ,在压缩时,可能会被直接计为“100个1”
压缩命令为通过一些计算方法将原本的文件进行压缩,以减少文件所占用的磁盘容量,压缩前与压缩后的文件所占用的磁盘容量比值,称为 压缩比
二 常见压缩和打包命令
压缩
- gzip
gzip 可以说是应用最广的压缩命令,可以解压compress,zipz,gizp 等压缩文件
gzip 所建立的压缩文件为*.gz
注意:压缩过后源文件消失
先找到目录中最大的文件
zzy@zzy-Lenovo-Legion-Y7000:~/C/AC/AB$ ls -ldSr ./*
-rw-r--r-- 1 zzy zzy 0 12月 23 2012 ./end
-rw-r--r-- 1 zzy zzy 8 5月 12 19:00 ./a.txt
-rw-r--r-- 1 zzy zzy 26 5月 6 17:15 ./Linux.txt
-rw-r--r-- 1 zzy zzy 223 5月 6 20:09 ./lianxi.c
-rw-r--r-- 1 zzy zzy 266 5月 13 23:47 ./a.c
-rw-r--r-- 1 zzy zzy 436 4月 1 21:32 ./calloc.c
之后压缩calloc.c文件:
zzy@zzy-Lenovo-Legion-Y7000:~/C/AC/AB$ gzip -v calloc.c
calloc.c: 52.1% -- replaced with calloc.c.gz
这里的 -v 可以显示出压缩比等信息
压缩参数
-c:输入到屏幕
-9:指的是压缩等级(一般6就够了)
通过 > 将本该打印在屏幕上的东西输入到文件中
gzip -c calloc.c > calloc.c.gz
由于我们压缩的是个文本文件我们可以试着读出压缩文件:
`zzy@zzy-Lenovo-Legion-Y7000:~/C/AC/AB$ zcat calloc.c.gz
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(char[26])
、、、、、、(后面省略)
接下来我们解压a.c:
gzip -d calloc.c.gz
2.bzip2
与gzip用法类似,但是bzip2的压缩效率更高
-k:不会删除源文件
3.xz
压缩效率更高
打包命令:tar
将多个文件或目录打包成一个大文件的命令功能
常用参数:
-z 通过 zip 进行解压的文件名最好用 *.tar.gz
-j 用 bzip2 同上 *tai.bz2
-J 用 xz 同上 *.tar.xz
-c 建立打包文件
-t 查看打包文件的文件名
-x 解压, 配合 -C(大写)可将其解压到特定目录
-v 解压或者要过程中把正在处理的文件名显示出来
-f 后面立刻接要被处理的文件名(建议单独写一个选项,避免忘记)
-p 保留原文件的属性(备份文件常用)
- 最简单的几个常用打包压缩命令:
压缩: tar -jcv -f name.tar.bz2 要被压缩的文件或目录名称
查询: tar -jtv - f name.tar.bz2
解压: tar -jxv -f name.tar.bz2 -C 欲解压的目录
另外:建议将 【-f name】紧密连接在一起
- 我们可以只打包,不压缩:
tar -cv -f filr.tar
如此,在很多书中该文件便称为 tarfile
如果有压缩支持的话,称为 tarball
此外,想要备份到磁带上(企业常用),可用指令:
tar -cv -f /dev/st0 /home
三.本章其他内容
1.xfsdump 命令可备份文件系统或单一目录;
2.xfsdump 的备份若针对文件系统时,可进行 0-9 的 level 差异备份,其中 leve 0 为完整备份;
3.xfsrestore 命令可以还原被 xfsdump 创建的备份文件
4.要建立光盘刻录数据时,可通过 mkisos 命令来创建
5.可通过 wodim 来写入 CD 或 DVD 刻录机
6.dd 可备份完整的硬盘或硬盘分区,因为 dd 可读取磁盘的扇区表面数据
7.cpio 为相当优秀的备份命令,不过必须要搭配类似 find 命令来读入欲备份的数据,方可进行备份操作。