一、linux压缩文件常见的格式
*.Z compress 程序压缩的文件; *.gz gzip 程序压缩的文件; *.bz2 bzip2 程序压缩的文件; *.tar tar 程序打包的数据,并没有压缩过; *.tar.gz tar 程序打包的文件,其中并且经过 gzip 的压缩 *.tar.bz2 tar 程序打包的文件,其中并且经过 bzip2 的压缩 |
tar可以将很多文件打包成一个文件
所以在压缩的时候一般都采用tar+gzip or bzip2的方式
二、常用的压缩命令
1、gzip,zcat
[root@www ~]# gzip [-cdtv#] 档名 [root@www ~]# zcat 档名.gz 选项与参数: -c :将压缩的数据输出到萤幕上,可透过数据流重导向来处理; -d :解压缩的参数; -t :可以用来检验一个压缩档的一致性~看看文件有无错误; -v :可以显示出原文件/压缩文件的压缩比等资讯; -# :压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6 范例一:将 /etc/man.config 复制到 /tmp ,并且以 gzip 压缩 [root@www ~]# cd /tmp [root@www tmp]# cp /etc/man.config . [root@www tmp]# gzip -v man.config man.config: 56.1% -- replaced with man.config.gz [root@www tmp]# ll /etc/man.config /tmp/man* -rw-r--r-- 1 root root 4617 Jan 6 2007 /etc/man.config -rw-r--r-- 1 root root 2684 Nov 10 17:24 /tmp/man.config.back.Z -rw-r--r-- 1 root root 2057 Nov 10 17:14 /tmp/man.config.gz <==gzip压缩比较佳 |
范例二:由於 man.config 是文字档,请将范例一的压缩档的内容读出来! [root@www tmp]# zcat man.config.gz # 由於 man.config 这个原本的文件是是文字档,因此我们可以尝试使用 zcat 去读取! # 此时萤幕上会显示 man.config.gz 解压缩之后的文件内容! 范例三:将范例一的文件解压缩 [root@www tmp]# gzip -d man.config.gz # 不要使用 gunzip 这个命令,不好背!使用 gzip -d 来进行解压缩! # 与 gzip 相反, gzip -d 会将原本的 .gz 删除,产生原本的 man.config 文件。 范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件 [root@www tmp]# gzip -9 -c man.config > man.config.gz |
zcat是读取纯文字被压缩后的压缩档
2、bzip2,bzcat
[root@www ~]# bzip2 [-cdkzv#] 档名 [root@www ~]# bzcat 档名.bz2 选项与参数: -c :将压缩的过程产生的数据输出到萤幕上! -d :解压缩的参数 -k :保留原始文件,而不会删除原始的文件喔! -z :压缩的参数 -v :可以显示出原文件/压缩文件的压缩比等资讯; -# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快! 范例一:将刚刚的 /tmp/man.config 以 bzip2 压缩 [root@www tmp]# bzip2 -z man.config # 此时 man.config 会变成 man.config.bz2 ! 范例二:将范例一的文件内容读出来! [root@www tmp]# bzcat man.config.bz2 # 此时萤幕上会显示 man.config.bz2 解压缩之后的文件内容!! 范例三:将范例一的文件解压缩 [root@www tmp]# bzip2 -d man.config.bz2 范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件 [root@www tmp]# bzip2 -9 -c man.config > man.config.bz2 |
3、打包命令:tar
[root@www ~]# tar [-j|-z] [cv] [-f 创建的档名] filename... <==打包与压缩 [root@www ~]# tar [-j|-z] [tv] [-f 创建的档名] <==察看档名 [root@www ~]# tar [-j|-z] [xv] [-f 创建的档名] [-C 目录] <==解压缩 选项与参数: -c :创建打包文件,可搭配 -v 来察看过程中被打包的档名(filename) -t :察看打包文件的内容含有哪些档名,重点在察看『档名』就是了; -x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开 特别留意的是, -c, -t, -x 不可同时出现在一串命令列中。 -j :透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2 -z :透过 gzip 的支持进行压缩/解压缩:此时档名最好为 *.tar.gz -v :在压缩/解压缩的过程中,将正在处理的档名显示出来! -f filename:-f 后面要立刻接要被处理的档名!建议 -f 单独写一个选项罗! -C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。 其他后续练习会使用到的选项介绍: -p :保留备份数据的原本权限与属性,常用於备份(-c)重要的配置档 -P :保留绝对路径,亦即允许备份数据中含有根目录存在之意; --exclude=FILE:在压缩的过程中,不要将 FILE 打包! |
其实最简单的使用 tar 就只要记忆底下的方式即可:
- 压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
- 查 询:tar -jtv -f filename.tar.bz2
- 解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
-z表示有gzip支持,文件名字最好取.tar.gz
打包某个目录,但是不包含某些文件的方法:
[root@www ~]# tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc* \ > --exclude=/root/system.tar.bz2 /etc /root |
仅备份比某个时刻还要新的文件
# 1. 先由 find 找出比 /etc/passwd 还要新的文件 [root@www ~]# find /etc -newer /etc/passwd ....(过程省略).... # 此时会显示出比 /etc/passwd 这个文件的 mtime 还要新的档名, # 这个结果在每部主机都不相同!您先自行查阅自己的主机即可,不会跟鸟哥一样! [root@www ~]# ll /etc/passwd -rw-r--r-- 1 root root 1945 Sep 29 02:21 /etc/passwd # 2. 好了,那么使用 tar 来进行打包吧!日期为上面看到的 2008/09/29 [root@www ~]# tar -jcv -f /root/etc.newer.then.passwd.tar.bz2 \ > --newer-mtime="2008/09/29" /etc/* ....(中间省略).... /etc/smartd.conf <==真的有备份的文件 ....(中间省略).... /etc/yum.repos.d/ <==目录都会被记录下来! tar: /etc/yum.repos.d/CentOS-Base.repo: file is unchanged; not dumped # 最后行显示的是『没有被备份的』,亦即 not dumped 的意思! # 3. 显示出文件即可 [root@www ~]# tar -jtv -f /root/etc.newer.then.passwd.tar.bz2 | \ > grep -v '/$' # 透过这个命令可以呼叫出 tar.bz2 内的结尾非 / 的档名!就是我们要的啦! |
- /etc/ (配置档)
- /home/ (使用者的家目录)
- /var/spool/mail/ (系统中,所有帐号的邮件信箱)
- /var/spool/cron/ (所有帐号的工作排成配置档)
- /root (系统管理员的家目录)