1、gzip
#后面直接加上要压缩的文件名,原文件会消失,并且把压缩文件命名成.gz结尾的文件
gzip file
#解压缩,解压后,压缩文件也会消失
gzip -d file.gz
怎么保留原文件呢?
#只会显示压缩后的文件,不会真的去压缩
gzip -c file
#保留原文件
gzip -c file >> /tmp/file.gz
2、bzip2
#直接加文件名,原文件也没有了,以.bz2结尾
bzip2 file
#解压,和gzip一样
bzip2 -d file
怎么保留原文件
#压缩保留原文件
bzip2 -k file
#解压保留原文件
bzip2 -k -d file.bz2
3、xz
#以.xz结尾
xz file
#解压
xz -d file.xz
4、tar
以上三种都不能压缩目录,所以有了tar工具
-
tar只是一个打包(归档)工具,本身并不带压缩功能,它依赖其它压缩工具进行压缩
-
先把一堆文件打包成一个文件,然后通过压缩工具,进行压缩
4.1、打包
#创建打包文件,把dir目录打包成dir.tar文件
tar -cvpf dir.tar dir
−c 创建打包文件
−v 显示打包过程
−p 保留权限
−f 指定打包后的文件名,如果要加这个选项,必须写在选项的最后一个
#解包
tar -xvf dir.tar
#把包解到指定目标路径
tar -xvf dir.tar -C /tmp
#查看一个目录及下所有文件大小
du -sh /boot
4.2、怎么对打包文件进行压缩
先打包再进行压缩,这样太麻烦了
#对/tmp/dir目录打包,并以bzip2方式压缩
tar -cvjf /tmp/dir.tar.bz2 /tmp/dir
−j 代表用bzip2压缩,压缩文件以.tar.bz2结尾
−J 代表用xz压缩,压缩文件以.tar.xz结尾
−z 代表用gzip压缩,压缩文件以.tar.gz结尾
4.3、解打包解压缩
#解压gzip压缩
tar -xzvf dir.tar.gz
#解压bzip2压缩
tar -xjvf dir.tar.bz2
#解压xz
tar -xJvf dir.tar.xz
4.4、测试功能
#只是测试解压,并没有真的解压
tar -tjvf /tmp/dir.tar.bz2
− t 测试
#打包压缩时,排除文件/boo/file
tar -czvf /tmp/boot.tar.gz /boot --exclude=/boot/file
#解压时,我只想解压其中一个文件
tar -xzvf /tmp/boot.tar.gz boot/file
5、dump备份工具
完整备份:对数据进行完整的备份
差异备份:每次备份都是针对完整备份,对差异部分进行备份
增量备份:每次备份都是针对上一次的备份,对差异部分进行备份
5.1、备份级别
dump的备份分为0-9共10个级别
0,表示完整备份
1,针对0级备份有差异的文件作备份
2,针对1级备份有差异的文件作备份
此次类推
5.2、dump的问题
-
对目录作备份,但只能做完整备份,不能做差异备份,不支持记录备份时间
-
对文件系统作备份,支持差异备份,同时可以记录备份的时间
-
所谓对文件系统备份,就是对一个分区的挂载点作备份
-
dump不支持xfs文件系统,需要用xfsdump工具
5.3、安装
yum install -y dump
5.4、测试
#测试备份/dev/sdb1这个文件系统要多大的空间
dump -S /dev/sdb1
5.5、完全备份
#将/dev/sdb1这个文件系统作一次全备,备份到/mnt/backup1这个文件中
dump -0u -f /mnt/backup1 /dev/sdb1
−0代表0级别,即全备
−u代表记录备份时间
−-f 指定备份目标
时间记录在哪儿
cat /etc/dumpdates
5.6、差异备份
#1,针对0备份作一次差异备份
#以后,每次都是指定1级别,就是差异备份
dump -1uf /mnt/backup2 /dev/sdb1
注意:
-
差异备份文件不能和全备文件在同一路径
5.7、增量备份
dump -2uf /mnt/backup3 /dev/sdb1
dump -3uf /mnt/backup4 /dev/sdb1
5.8、对目录作备份
目录只能作0级全备,且不能记录时间
dump -0 -f /mnt/boot_backup /boot
5.9、查看备份
restore -tf /mnt/boot_backup
− t,查看备份
#查看备份文件和本地文件系统的差异
#注意:只会查看备份中有的数据和本地的差异
restore -C -f /mnt/b1
5.10、还原备份
restore -r -f /back/ba1
−-r 读
−-f 指定读哪个文件
注意:
-
只能还原到当前目录,所以作还原的时候,一定要记得切换到你想还原的目标目录,会覆盖现有文件
#上面的方式会还原备份文件里的所有文件,但大多时候,我们只需要还原部分文件
restore -i -f /back/ba1
− i进行交互式还原
#查看备份文件里的内容
restore > ls
#添加只要还原的文件
restore >add file
#这时会发现,添加的文件前面多了个 *
restore >ls
#正式还原选中的文件,需要指定一个volume
restore >extract
6、dd
dd是一个Unix和类Unix系统上的命令,主要功能为转换和复制文件
使用dd命令新建一个指定大小的文件
dd if=/dev/zero of=/mnt/file bs=1M count=1
2+0 records in
2+0 records out
2097152 bytes (2.1 MB) copied, 0.00492158 s, 426 MB/s
−if,表示input file
−of,表示output file
−bs,指定一个block的大小,如果不指定,默认为512字节(一个扇区大小)
−count,指定多少个block
−2+0,其中,2表示执行过程中,用了多少个指定大小的block(这里是1M),后面的0表示,没达到指定大小的bs个数
6.1、dd命令也可以用来备份文件
dd if=/etc/passwd of=/mnt/passwd.back
1+1 records in
1+1 records out
962 bytes (962 B) copied, 0.000175741 s, 5.5 MB/s
−这里可以发现,passwd文件有962字节大
−没有指定block大小,默认为512字节,而文件有962字节,那就是一个block大小+450字节(不到一个block大小)
−1+1,前面的1表示,有一个指定大小的block,后面的1表示,还有一个不够指定大小的block
#使用dd命令刻录ISO文件到光盘
dd if=/mnt/rhel7.iso of=/dev/sdb
7、rsync
rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
7.1、同步文件
rsync /tmp/f1 username@serverb:/tmp/
−#相当于serverb以username这个用户在serverb的/tmp目录下创建了一个新的文件,所以
−#username首先对/tmp这个目录要有权限,
−#传过去的文件的拥有者和拥有组都变成了username,
−#权限不会变
rsync -av /tmp/file username@serverb:/tmp
-a,表示“存档模式”,实际一次性使用了多个选项:
−-r,递归
−-l,同步软链接
−-p,保持权限
−-t,保持时间戳
−-g,保持拥有组
−-o,保持拥有者
−-D,同步设备文件
−-v 显示过程
#username只为root时,才可以保持拥有组和拥有者身份。
#注意,-a选项不会同步ACL、SELINUX上下文,如果要同步ACL,需要加上-A选项,同步selinux上下文件,加-X
#如果一个文件已经传过一次,再传,会增量传输,也就是只会把有差异的内容传过去
7.2、同步目录
rsync -rav /tmp/ username@:/tmp
−-r,递归
注意:
-
源路径如果是目录的话,尾部的斜线(/),带或不带是不一样的
-
不带,表示将整个目录及目录本身,一起同步
-
带,表示只将目录下的文件同步,不包括目录本身