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,递归

 

注意:

  • 源路径如果是目录的话,尾部的斜线(/),带或不带是不一样的

  • 不带,表示将整个目录及目录本身,一起同步

  • 带,表示只将目录下的文件同步,不包括目录本身