常见的压缩命令,linux下压缩文件的扩展名基本如下
*.Z compress程序的压缩文件,这个程序已经过时,不常用
* .gz gzip程序压缩
*.bz2 bzip2程序压缩的文件
*.tar tar程序打包的程序数据,但是没有压缩过。
*.tar.gz tar程序打包的文件,经过了gzip的压缩
*.tar.bz2 tar程序打包的文件经过了bzip的压缩
bzip2和gzip仅仅能对一个文件压缩和解压缩,每次压缩和解压缩都要一大堆文件。
gzip [ -cdtv#] 文件名 zcat 文件名.gz
参数:
-c 将压缩的数据输出到屏幕上,可以通过数据流重定向处理
-d 解压缩的参数
-t 检测一个压缩文件的一致性,看看文件是否有错误
-v 显示源文件和目标文件的压缩比
-# -1最快,压缩比最差,-9最慢,压缩比最好默认是-6
如果压缩的文件是文本文件,可以用zcat读取里面信息
bzip2,bzcat 基本和gzip和zcat一样
bzip2 [-cdkzv#] 文件名
bzcat 文件名.bz2
-c 将压缩的数据输出到屏幕上,可以通过数据流重定向处理
-d 解压缩的参数
-k 保留原文件,不会删除原始文件
-z压缩的参数
-v 显示源文件和目标文件的压缩比
-# -1最快,压缩比最差,-9最慢,压缩比最好默认是-6。
打包命令tar:
tar [-j][-z][cv][-f 新建文件名] filename ....<<=打包和压缩
tar[ -j ][ -z ][ tv ][ -f 新建文件名 ] <<=查看文件名
tar [-j][-z] [xv][-f 新建文件名 ][-C目录] 解压缩
参数
-c 新建打包文件,可搭配-v查看过程被打包的文件名
-t 查看打包文件的内容有那些文件名,重点在看文件名
-x 解打包或者解压缩文件。可以配合-C在特定的目录解开
-j通过bzip2支持的进行压缩和解压缩 ,最好以 .tar.bz2结尾
-z通过gzip的支持进行压缩和解压缩 ,最好以 .tar.gz结尾
-v 压缩解压缩过程把文件名显示出来
-C后面是目录
-f 后面是要处理的文件名
常用:
压缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或者目录
查询:tar -jtv -f filename.tar.bz2
解压缩:tar -jxv -f filename.tar.bz2 -C 目录
压缩一般去掉根目录的原因:
压缩的文件一般会被解压缩使用,如果解压缩的文件的路径是绝对路径会把原来已经存在的路径的文件进行覆盖。
案例
打包某些目录但是不包含某些文件
tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc* --exclude=/root/system.tar.bz2 /etc/root :打包 /etc /root但是不打包 /root/etc* 开头的文件的文件,最后生成的文件是/root/system.tar.bz2 文件不能包含自己,所以也加入了不包含的选项。
仅仅解开单一文件的办法
tar -jtv -f /root/etc.tar.bz2 |grep 'shadow'
然后会出现所有shadow的关键字的文件,假设shadow就是要找的文件里面包含的关键字
然后tar -jxv -f 打包文件.tar.bz2 待解开的文件名
tar -jxv -f /root/etc.tar.bz2 etc/shadow 意思是要把里面的 /etc/shadow解压出来
仅仅备份比某个时刻还要新的文件
tar -jcv -f 目标文件名.tar.bz2 --newer-mtime="xxxx/xx/xx" 要打包的文件
完整备份工具:dump
dump [-Suvj] [-level] [-f 备份文件 ] 待备份数据
-S:仅仅列出备份需要的空间
-u:把这次备份的时间记录到 /etc/dumpdateS 文件里面
-v:将dump过程中的文件显示出来
-j:加入bzip2的支持
-level等级
-f 后面接产生的文件名
-W:列出/etc/fstab 的具有dump设置的分区是否备份过
这里的运行等级指的是,在第一次dump备份后,再进行第二次备份的时候,可以指定等级,等级为1,只会记录与第一次备份所有差异的文件而已。然后依次类推。
备份的说明:
当待备份的数据是单一文件系统,那么该文件系统可以使用完整的dump功能,包括利用0~9的数个level备份。同时,备份时可使用挂载点或者是设备文件名。
当待备份的数据只是目录并非独立的文件系统。
限制如下:
- 所有的备份数据必须要在该目录下 这里感觉有点问题,案例上单一目录找的例子就没有放在那个目录下 dump -oj -f /root/etc.dump.bz2 /etc
- 仅仅能使用level 0 ,就是完整备份
- 不支持-u参数,无法把这个备份的时间进行记录
有备份就有恢复:restore
restore -t [ -f dumpfile ] [-h] 用来查看dump文件
restroe -C [-f dumpfile] [-D 挂载点 ] 比较dump和实际文件
restore -i [-f dumpfile] 进入互动模式
restore -r [-f dumpfile] 还原整个文件系统
-t:查看dump
-C :此模式可以将dump内的数据拿出来和实际的文件系统比较。最终列出“在dump文件有记录的,
-i:进入还原模式,可以仅还原部分文件,
-r:整个文件系统还原的一种模式,用在还原针对文件系统的dump备份。
-h:查看完整备份的inode与文件系统的label信息
-f:后面接要处理的dump
命令dd:
这个命令最大的作用是备份,它可以直接对磁盘内容进行读取,直接读取扇区;
格式:dd if="input file" of="output file" bs="block size" count="number"
例如将磁盘的第一个扇区备份下来
dd if=dev/sda of=/tmp/mbr.bak bs=512 count=1
dd可以备份整块分区或者磁盘