远程备份rsync的使用

 /*rsync不仅可以远程同步数据,还可以本地同步数据(类似于cp),但不同于cp的是的是rsync不会像cp一样覆盖以前的数据(如果数据已经存在),

 它会先判断已经存在的数据和新数据有什么不一样,只有不同时才会把不同的部分覆盖掉,也就是rsync支持增量备份。如果linux系统中灭有rsync命令,可以用yum install -y rsync安装!

看一下rsync的工作模式共有7种,如下!

rsync备份_rsync

 rsync常用的选项

 -a:归档模式,表示以归档方式传输文件,并保持所有属性,等同于-rpltgoD,-a选项后面可以跟上一个-no-OPTION这个表示关闭-rpltgoD中的某一

 个。eg:-a--no-l等同于rptgoD!

 -r:对子目录以递归处理,主要针对目录来说的,如果单独传一个文件不需要加-r,但若传输的是目录则必须加-r

 -v:打印一些信息出来,比如速率,文件数量等

 -l:保留软连接

 -L:向对待常规文件一样处理软链接,如果是SRC中有软连接,则加上该选项后将会把软连接指向的目标文件拷贝到DST

 -p:保持文件权限

 -o:保持文件属主信息

 -g:保持文件属组信息

 -D:保险文件设备信息

 -t:保持文件时间信息

 --delete:删除那些DST中SRC没有的文件

 --exclude=PATTERN指定不需要传输的文件,等号后面跟文件名!

 --progress在同步的过程中可以看到同步进程的状态,比如统计要同步的文件数量,同步的文件传输速度等等!

 -u:加上这个选项会把DST中比SRC还新的文件排除掉,不会覆盖!

rsync的本地主机上复制,类似直接使用cp命令,所以不再举例!

rsync的远程复制或者备份类似于使用scp命令,我们来看一下:

1》我们把客户端机器上当前目录下的目录文件备份到主机上:

[root@client ~]# rsync -av lianxi root@192.168.1.113:/root/   /主机名为client
root@192.168.1.113's password: 
sending incremental file list
lianxi/
lianxi/passwd.back
lianxi/test.gz.tar
lianxi/11/
lianxi/test/
lianxi/test/test.tst

sent 2216 bytes  received 81 bytes  353.38 bytes/sec
total size is 1931  speedup is 0.84

//在主机上检测一下//
[root@master ~]# ls
1  1.retry  anaconda-ks.cfg  install.log  install.log.syslog  lianxi  /目录已经成功备份
[root@master ~]#

2》我们把主机上的文件拉到客户端:

[root@client ~]# rsync -av root@192.168.1.113:/root/1.retry .  /拉的文件放到当前目录下
root@192.168.1.113's password: 
receiving incremental file list
1.retry

sent 30 bytes  received 104 bytes  24.36 bytes/sec
total size is 24  speedup is 0.18
[root@client ~]# ls              /可以发现文件已经在当前目录下!
1.retry          id_rsa.pub   install.log.syslog  tvpdump.tst
anaconda-ks.cfg  install.log  lianxi
[root@client ~]#

这样的两种操作方法和SCP命令是相似的http://zidingyi.blog.51cto.com/10735263/1725828,但是这样操作时,需要输入密码,我们可以设置成ssh无密码认证的方式,http://zidingyi.blog.51cto.com/10735263/1746755

3》设置成daemon模式登录,这种模式登录相比与ssh登录,具有更安全的优点,他可以对登入的用户做一些必要的权限的限制,采用ssh登录,也就等于远端客户机完全可以控制你的主机。

rsync服务做成daemon模式的配置文件:

[root@client ~]# vim /etc/rsyncd.conf     /把配置文件放在/etc下面,启动服务时会自动加载

#port=8730
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
#address=127.0.0.1
[test]
path=/tmp/rsync
use chroot=true
max connections=4
read only=no
list=true
uid=root
gid=root
auth user=test
secret file=/etc/rsyncd.passwd
host allow =192.168.1.113
~                                                                                   
~

配置文件的解释:

其中配置文件分为两部分;全局配置文件和模块配置文件,全局配置文件就是几个参数而已,[test]以上的就是全局配置文件,[test]以下的就是模块配置文件。一个配置文件中可以有多个模块,模块名自己定义。

port指定那个端口启动rsync服务。

log file指定日志文件

pid file指定pid文件,这个文件的作用是涉及到服务的启动以及停止等进程管理操作

address指定启动rsyncd服务的ip,假如你的机器上有多个ip,就可以指定其中一个启动rsyncd服务,默认是在全部的ip主机都可以使用rsync服务。

[test]模块名 自己定义的

path指定数据存放的路径,相当于这个模块的家目录

use chroot= true 默认是true,意思是在传输文件以前首先chroot到path参数所指定的目录下,这样做的原因是实现额外的安全防护,但是缺点是需要以root权限,并且不能备份指向外部符号连接锁指向的内容(如软连接指向的内容)。默认情况下chroot的值为true,如果你备份的数据有软连接时建议设置成false。

max connections指定最大的连接数,默认是0即没有限制。

read only=no 如果是yes则不能上传到该模块的指定路径下。

list指定当前用户查询该服务器上的可用模块时,该模块是否被列出,设定true列出,false隐藏。

uid/gid  指定传输文件时,以那个用户/组的身份传输

auth user 指定传输时要使用的用户名

secret file 指定密码文件,该文件格式如下:注意此文件的权限一定要改为600

[root@client ~]# vim /etc/rsyncd.passwd 

test:12345           /用户名:密码

host allow 指定被允许连接该模块的主机,可以是ip或者网段,如果是多个,之间用空格隔开。

rsync服务器的详细介绍https://segmentfault.com/a/1190000002502991