首页 > 代码库 > rsync简单配置及实现

rsync简单配置及实现

rsysnc的工作模式

工作中常用第三种工作方式,并且为了不让备份服务器产生压力,使用push方式进行备份。

技术分享

第一种方式举例:

rsync -avz /etc/hosts /tmp/      #相当于cp /etc/hosts /tmp/
rsync -avz --delete /null/ /tmp/  #相当于rm -rf /tmp/*

第二种方式举例:

rsync -avzP -e ‘ssh -p 22‘ /tmp root@192.168.0.8:/tmp   #push方式
rsync -avzP -e ‘ssh -p 22‘ root@192.168.0.8:/tmp /tmp   #pull方式

第三种方式:

rsync -avz /tmp/ rsync_backup@192.168.0.8::backup   #push方式

服务端(存放备份文件的服务器)

第一步、创建rsyncd.conf 文件

[root@Backup_Server ~]# vi /etc/rsyncd.conf
uid = rsync  #程序属主
gid = rsync   #程序属组
use chroot = no  # 是否root账户
max connetions = 2000  #最大连接的客户端数量
timeout = 600  #超时时间,超时自动断开,需要服务再主动连接
pid file = /var/run/rsyncd.pid  #pid文件存放地址
lock file = /var/run/rsync.lock  #锁文件地址
log file = /var/log/rsyncd.log  #日志文件存放目录
ignore errors  #忽略错误
read only = false  #表示可读可写
list = false   #表示可以远程列表
hosts allow = 192.168.0.0/24  #允许主机地址
hosts deny = 0.0.0.0/32  #拒绝主机地址
auth users = rsync_backup  #运行服务的用户
secrets file = /etc/rsync.password  #密码文件
#####################
[backup]   #模块名字
comment = this is luruiqi writter  #注释
path = /backup   #需要备份的目录,最好和模块名字一样,方便查找
###################################
[root@Backup_Server ~]# rsync --daemon  #启动
[root@Backup_Server ~]# ps -ef |grep rsync |grep -v grep  #检查
root  3168  1  0 07:16 ?   00:00:00 rsync --daemon
[root@Backup_Server ~]# netstat -lntup |grep rsync  #检查
tcp    0   0 0.0.0.0:873   0.0.0.0:*   LISTEN    3168/rsync
tcp    0   0 :::873        :::*   LISTEN    3168/rsync
[root@Backup_Server ~]# ss -lntup |grep rsyn  #检查
tcp  LISTEN  0   5    :::873    :::*    users:(("rsync",3168,5))
tcp  LISTEN  0   5     *:873     *:*    users:(("rsync",3168,3))
[root@Backup_Server ~]# lsof -i :873  #检查
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsync   3168 root  3u  IPv4  16481   0t0  TCP *:rsync (LISTEN)
rsync   3168 root  5u  IPv6  16482   0t0  TCP *:rsync (LISTEN)
[root@Backup_Server ~]# useradd rsync -s /sbin/nologin -M  #创建rsync账户
[root@Backup_Server ~]# id rsync #检查创建用户的结果
uid=500(rsync) gid=500(rsync) groups=500(rsync)
[root@Backup_Server ~]# mkdir /backup  #创建备份目录
[root@Backup_Server ~]# chown -R rsync /backup  #更改备份目录的属组
[root@Backup_Server ~]# ll -d /backup/  #检查是否更改属组
drwxr-xr-x 2 rsync root 4096 Dec  2 07:25 /backup/
[root@Backup_Server ~]# echo "rsync_backup:123456" >/etc/rsync.password  #创建账号和密码
[root@Backup_Server ~]# cat /etc/rsync.password  #检查是否创建
rsync_backup:123456
[root@Backup_Server ~]# chmod 600 /etc/rsync.password  #配置密码文件的访问权限
[root@Backup_Server ~]# ll /etc/rsync.password    #检查是否更改
-rw------- 1 root root 20 Dec  2 07:29 /etc/rsync.password

客户端(需要备份的服务器)

客户端不需要创建rsyncd.conf,只需要创建一个密码文件即可

[root@NFS-server ~]# echo "123465" >/etc/rsync.password 
[root@NFS-server ~]# chmod 600 /etc/rsync.password 
[root@NFS-server ~]# ll /etc/rsync.password 
-rw------- 1 root root 7 Nov 22 03:33 /etc/rsync.password
[root@NFS-server ~]# cat /etc/rsync.password 
123465

测试一下

rsync -avz /tmp/ rsync_backup@192.168.0.8::backup --password-file=/etc/rsync.password

NFS服务器(rsync客户端)

技术分享技术分享

Backup服务器(rsync服务端)

技术分享技术分享

-----------------------------------------------------------

以上看出简单的配置已经完成,能完成简单的文件备份传输工作。


重启rsync的组合命令pkill rsync #强制关闭服务

killall rsync #平滑的杀进程“需要重复多次确保杀死进程”
kill ‘cat /var/run/rsyncd.pid‘  #杀进程,也等同于关闭服务
rsync --daemon  #启动进程
kill -HUP ‘cat /var/run/rsyncd.pid‘ #平滑的杀死进程
kill  -USR2 ‘cat /var/run/rsyncd.pid‘  #平滑的杀死进程

检查启动的进程

ps -ef |grep rsync

--------------------------------------------------------------------

总结上面所有的步骤

rsync server配置步骤

1. vi /etc/rsyncd.conf

2.创建rsync用户及共享的目录/backup

useradd rsync -s /sbin/nologin -M

mkdir /backup

chown -R rsync /backup

3.创建密码文件

echo "rsync_backup:oldboy" >/etc/rsync.password

cat /etc/rsync.password

chmod 600 /etc/rsync.password

4.启动服务并检查

rsync --daemon

5.加入开机自启动

echo "rsync --daemon" >>/etc/rc.local

tail -2 /etc/rc.local


---------------------------------------------------------

客户端恢复拉取服务器上的资源,需要在客户端上运行下面语句:

rsync -avz rsync_backup@192.168.1.8::backup   /tmp/ --password-file=/etc/rsync.password


-------------------------------------------------------------------------------------------

注意 :不管是推  拉都是在客户端操作,服务器只运行rsync服务

----------------------------------------------------------------------------

安全优化:1.监听内部的IP地址

[root@Backup_Server backup]# netstat -lntup|grep rsync

tcp        0      0 0.0.0.0:873                0.0.0.0:*                   LISTEN      29031/rsync

tcp        0      0 :::873                      :::*                        LISTEN      29031/rsync

由以上可知默认是监听全网IP  0.0.0.0:873 我们需要改成内网网段

进行如下更改启动

[root@Backup_Server backup]# rsync --daemon --address=192.168.1.0

[root@Backup_Server backup]# netstat -lntup|grep rsync

tcp        0      0 192.168.1.0:873            0.0.0.0:*                   LISTEN      29153/rsync

[root@Backup_Server backup]#

----------------------------------------------------------------------------------------

排错环节

思路:配置过程必须熟练,按操作过程检查一遍


服务端排错:

1.rsync服务的配置文件路径是否正确,默认路径为 、/etc/rsyncd.conf

2.查看配置文件里host allow,host deny,允许的IP网段,是否允许客户端访问.

3.查看path参数里的路径是否存在,权限是否正确(正常应为配置文件中的UID参数的属组和属主)

4.查看rsync服务是否启动,查看命令为ps -ef |grep rsync,端口是否存在 netstat -lntup |grep 873

5.查看iptables防火墙和selinux是否开启允许rsync服务通过,内网可以关闭。

6.查看服务端rsync配置的密码文件是否为600的权限,密码文件格式是否正确,正确格式为username:password  ,文件路径和配置文件里的secrect files参数对应。

7.如果是推送数据,要查看下配置rsyncd.conf文件中用户是否对模块下目录有读写的权限。

客户端排错思路:

1.查看客户端rsync配置的密码文件是否为600的权限,密码文件格式是否正确,注意,只需要密码,并且和服务端的密码一致。

2.用telnet连接rsync服务器的IP地址873端口,查看服务是否启动(可测试服务端防火墙是否阻挡)telnet 192.168.1.8 873

3.客户端执行命令是rsync -avzP rsync_backup@192.168.1.8::backup /test/ --password-file=/etc/rsync.password

此命令的细节需注意   服务端的IP地址后面是双冒号;随后接的是服务端模块的名字。






本文出自 “RichyLu____记录” 博客,请务必保留此出处http://richylu.blog.51cto.com/1481674/1879847

rsync简单配置及实现