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地址后面是双冒号;随后接的是服务端模块的名字。
转载于:https://blog.51cto.com/richylu/1879847