远程备份rsync的使用
/*rsync不仅可以远程同步数据,还可以本地同步数据(类似于cp),但不同于cp的是的是rsync不会像cp一样覆盖以前的数据(如果数据已经存在),
它会先判断已经存在的数据和新数据有什么不一样,只有不同时才会把不同的部分覆盖掉,也就是rsync支持增量备份。如果linux系统中灭有rsync命令,可以用yum install -y rsync安装!
看一下rsync的工作模式共有7种,如下!
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