标签:rsync服务的搭建
rsync 服务总结第1章 rsync简介
1.1  什么是rsync
?   rysnc是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。rsync软件适用于unix/linux等多种操作平台
?   一个rsync命令相当于scp(远程备份,但是rsync可以实现增量备份)、cp、rm三个命令
?   centos5系列和centos6系列的差别在于5系列是先进性对比,然后在进行同步,6系列是一边对比差异一边进行同步
1.2  rsync的特性
?   支持拷贝特殊文件,如连接文件等
?   可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能
?   可以做到保持源文件或目录的权限、时间、软连接、属主、属组等所有属性均不改变 (-p选项)
?   可以实现增量同步,即只同步发生变化的数据,因此数据传输效率很高
?   可以使用rcp、rsh、ssh等方式来配合传输文件(rsync本身不对数据加密)
?   可以通过socket(进程方式)传输文件和数据(服务端和客户端)
?   支持匿名的或认证(无需系统用户)的进程模式传输,可方便安全的进行数据备份及镜像备份
1.3  rsync常用选项
-v(--verbose):详细模式输出,即显示传输时的进度信息
-z(--compress):传输时对数据进行压缩处理,--compress-level=数字,可以按照压缩级别压缩
-a(--archive):归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rtopgDl
-r(--recursive):对子目录以递归模式进行处理,即目录下的所有目录都同样处理
-t(--time):保持文件时间信息(时间属性)
-o(--owner):保持文件属主信息
-p(--perms):保持文件权限
-g(--group):保持文件属组信息
-D(--devices):保持设备文件信息
-l(--links):保持软连接文件信息
1.4  rsync的三种工作模式
1.4.1 本地模式
?   【格式】
rsync  选项   源   目的
?   【实例】
[root@backup tmp]# rsync -avz /etc/hosts /tmp/
sending incremental file list
hosts
sent 183 bytes  received 31 bytes  428.00 bytes/sec
total size is 296  speedup is 1.38
[root@backup tmp]# ls
hosts
1.4.2  ssh通道模式(shell模式)
?   【格式】
rsync  选项  源  用户@远端主机:远端目录 (推动作)
rsync  选项  用户@远端主机:远端目录  源 (拉动作)
?   【实例】
###################################推动作######################################
[root@backup tmp]# rsync -avz /etc/hosts -e ‘ssh -p 22‘ root@172.16.1.31:/tmp/
The authenticity of host ‘172.16.1.31 (172.16.1.31)‘ can‘t be established.
RSA key fingerprint is c2:34:59:81:a2:a7:9c:0a:23:9b:cf:1d:bb:d4:8e:ad.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘172.16.1.31‘ (RSA) to the list of known hosts.
root@172.16.1.31‘s password: 
sending incremental file list
hosts
sent 183 bytes  received 31 bytes  47.56 bytes/sec
total size is 296  speedup is 1.38
####################################拉动作#####################################
[root@backup tmp]# rsync -avz -e ‘ssh -p 22‘ root@172.16.1.31:/tmp/ /tmp/
root@172.16.1.31‘s password: 
receiving incremental file list
./
hosts
.ICE-unix/
sent 37 bytes  received 238 bytes  110.00 bytes/sec
total size is 296  speedup is 1.08
[root@backup tmp]# ls
hosts
1.4.3 daemon模式
?   【格式】
rsync  选项  源  用户@主机::模块  --password-file=客户端密码配置文件(推动作)
rsync  选项  用户@主机::模块 目的目录  --password-file=客户端密码配置文件(拉动作)
?   【实例】  
######################################拉动做###################################
[root@oldboy ~]# rsync  -avz rsync_backup@172.16.1.41::backup/ /tmp/ --password-
file=/etc/rsync.password 
receiving incremental file list
./
stu01
......
sent 257 bytes  received 551 bytes  1616.00 bytes/sec
total size is 0  speedup is 0.00
[root@oldboy ~]# cd /tmp/
[root@oldboy tmp]# ls
stu01  stu02  stu03  stu04  stu05  stu06  stu07  stu08  stu09  stu10
######################################推动做###################################
[root@oldboy tmp]# rsync -avz /tmp/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password 
sending incremental file list
./
stu01
......
.ICE-unix/
sent 517 bytes  received 205 bytes  1444.00 bytes/sec
total size is 0  speedup is 0.00
第2章  rsync daemon模式的配置
2.1 服务端的配置
2.1.1 查看安装环境
[root@backup ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
[root@backup ~]# uname -r 
2.6.32-696.el6.x86_64
2.1.2 查看是否有rsync安装包
[root@backup ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
注意:若没有该安装包,可以通过yum进行安装,安装命令如下:
[root@backup ~]# yum install -y rsync
2.1.3 添加rsync用户,用来管理本地目录
[root@backup ~]# useradd rsync -s /sbin/nologin -M
[root@backup ~]# id rsync
uid=501(rsync) gid=501(rsync) groups=501(rsync)
注意:该用户是虚拟用户,不需要进行登录
2.1.4 生成配置文件/etc/rsyncd.conf(该文件默认是不存在的)
[root@backup ~]# vim /etc/rsyncd.conf
################################写入的内容如下#################################
#rsync_config____start
#created by oldboy
##rsyncd.conf start##
uid = rsync     
gid = rsync     
use chroot = no 
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
#log file = /rsync/rsyncd.log
[backup]
path = /backup/
ignore errors
read only = false
list = false 
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#rsync_config_end
[root@backup ~]# cat /etc/rsyncd.conf   #查看
?   【配置文件etc/rsyncd.conf详解】
#rsync_configstart
#created by oldboy
##rsyncd.conf start##
uid = rsync   #进程对应的用户 远端的命令使用rsync访问共享目录
gid = rsync   #用户组
use chroot = no  #和安全相关的 
max connections = 200  #最大连接数 即同时允许多少客户同时连接
timeout = 300  #连接超时时间
pid file = /var/run/rsyncd.pid  #进程对应的进程号文件
lock file = /var/run/rsync.lock  #锁文件 是为了保持数据的一致性
log file = /var/log/rsyncd.log  #日志文件 记录访问和出错信息
[backup]  #模块名称
path = /backup/  #服务器提供访问的目录
ignore errors  #忽略错误
read  only = false #忽略可读  表示可写
list = false  #不能使用ls的功能  即不能列表
hosts allow = 172.16.1.0/24  #允许哪些机器可以连
hosts deny = 0.0.0.0/32  #禁止哪些用户可以连
auth users = rsync_backup  #虚拟用户 独立于系统之外的虚拟用户
secrets file = /etc/rsync.password  #虚拟用户对应的用户和密码
#rsync_config_____end
2.1.5 启动并检查是否启动成功
[root@backup ~]# rsync –daemon
[root@backup ~]# ps -ef |grep rsync|grep -v grep
2.1.6 建立共享目录并赋予权限
[root@backup ~]# mkdir /backup/
[root@backup ~]# chown -R rsync.rsync /backup/
[root@backup ~]# ls -ld /backup/
注意:如果目录不存在,会报错,详细错误见下面的错误总结
2.1.7 创建密码文件并编辑
[root@backup ~]# vim /etc/rsync.password
[root@backup ~]# cat /etc/rsync.password 
rsync_backup:123456  
注意:密码文件的格式为:   用户:密码
2.1.8 更改密码文件的权限并检查
[root@backup ~]# chmod 600 /etc/rsync.password
[root@backup ~]# ls -l /etc/rsync.password
-rw------- 1 root root 20 Jan 16 20:21 /etc/rsync.password
注意:密码文件的权限是600
2.1.9 查看rsync服务的端口
[root@backup ~]# lsof -i :873
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsync   1201 root    4u  IPv4  10536      0t0  TCP :rsync (LISTEN)
rsync   1201 root    5u  IPv6  10537      0t0  TCP :rsync (LISTEN)
[root@backup ~]# netstat -tunlp|grep 873
tcp        0      0 0.0.0.0:873                 0.0.0.0:                   LISTEN      1201/rsync          
tcp        0      0 :::873                      :::                        LISTEN      1201/rsync
2.1.10 将rsync服务加入开机自启动
[root@backup ~]# echo  "/usr/bin/rsync --daemon" >>/etc/rc.local
[root@backup ~]# tail -1 /etc/rc.local 
/usr/bin/rsync --daemon
2.2 客户端配置步骤
2.2.1 建立密码文件,只需在文件中写入密码即可
[root@nfs01 ~]# vim /etc/rsync.password
[root@nfs01 ~]# cat /etc/rsync.password 
123456
2.2.2 给密码文件设置权限
[root@nfs01 ~]# chmod 600 /etc/rsync.password
[root@nfs01 ~]# ls -l /etc/rsync.password
-rw------- 1 root root 7 Mar  8 10:56 /etc/rsync.password
注意:密码文件的权限是600
2.2.3 建立打包目录
[root@nfs01 ~]# mkdir /backup/
2.3 测试
2.3.1 在客户端建立测试文件
[root@nfs01 ~]# cd /backup/
[root@nfs01 backup]# touch {01..10}
[root@nfs01 backup]# ls
stu01  stu02  stu03  stu04  stu05  stu06  stu07  stu08  stu09  stu10
2.3.2 测试命令
【方法1】
[root@nfs01 backup]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup/ --password-
file=/etc/rsync.password
【方法2】
[root@nfs01 backup]# rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/backup/ --
password-file=/etc/rsync.password
2.4 rsync多模块的配置
2.4.1 编辑配置文件/etc/rsyncd.conf
[root@backup oldboy]# vim /etc/rsyncd.conf
[root@backup oldboy]# cat /etc/rsyncd.conf
#rsync_config____start
#created by oldboy
##rsyncd.conf start##
uid = rsync     
gid = rsync     
use chroot = no 
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
#log file = /rsync/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
path = /backup/
[oldboy]
path = /oldboy/
#rsync_config_____end
2.4.2 创建目录并赋予权限
[root@backup ~]# mkdir /oldboy/
[root@backup ~]# chown -R rsync.rsync /oldboy/
[root@backup ~]# ls -ld /oldboy/
2.4.3 重启rsync服务
[root@backup ~]# pkill rsync
[root@backup ~]# ps -ef |grep rsync |grep -v grep
[root@backup ~]# rsync --daemon
2.4.4 在客户端进行测试
[root@nfs01 ~]# rsync -avz /backup/ rsync_backup@172.16.1.41::oldboy/ --password-
file=/etc/rsync.password
2.5 rsync多用户的配置
2.5.1 编辑配置文件/etc/rsyncd.conf
[root@backup ~]# vim /etc/rsyncd.conf
[root@backup ~]# cat /etc/rsyncd.conf
#rsync_config____start
#created by oldboy
##rsyncd.conf start##
uid = rsync     
gid = rsync     
use chroot = no 
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
#log file = /rsync/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
path = /backup/
[oldboy]
path = /oldboy/
auth users = test
secrets file = /etc/rsync.password.oldboy
#rsync_config_____end
2.5.2 创建密码文件/etc/rsync.password.oldboy
[root@backup ~]# vim /etc/rsync.password.oldboy
[root@backup ~]# cat /etc/rsync.password.oldboy 
test:123456
2.5.3 在客户端进行测试
[root@oldboy ~]# rsync -avz /backup/ test@172.16.1.41::oldboy/ --password-
file=/etc/rsync.password
注意:文档中多模块及多用户的配置都是在daemon服务搭好的基础上进行的
第3章  服务模式排除及无差异同步
3.1 服务模式排除
?   【命令】
[root@nfs01 backup]# rsync -avz --exclude=a  /backup/ rsync_backup@172.16.1.41::backup/ --
password-file=/etc/rsync.password  #排除一项
[root@nfs01 backup]# rsync -avz --exclude={a..g} /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password  #排除连续多项
[root@nfs01 backup]# rsync -avz --exclude={a,c} /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password  #排除不连续的多项
3.2 无差异同步
?   【命令】
[root@nfs01 backup]# rsync  -avz --delete /backup/ rsync_backup@172.16.1.41::backup/  --
password-file=/etc/rsync.password
注意:该项尽可能的不用否则会引起血的惨案
第4章  企业案列
4.1 案例1
某运维人员在做数据备份,导致带宽被占满,致使用户无法访问网站
4.2 案例2
某视频网站的运维人员在往线上服务器上发布视频时,使用了无差异同步(如下命令),导致服务器上之前的视频全部被清空,只留下当天推送的视频
[root@nfs01 backup]#rsync -avz --delete /backup/ rsync_backup@172.16.1.41::backup/  --
password-file=/etc/rsync.password
第5章节  错误重现
5.1 服务端错误
5.1.1 rsync服务端缺少共享目录
?   【错误实例】
?   【解决方法】
只需在服务端创建共享目录,然后赋予其权限即可
[root@backup ~]# mkdir /backup
[root@backup ~]# ls -ld /backup/
drwxr-xr-x 2 root root 4096 Mar  8 10:00 /backup/
[root@backup ~]# chown -R rsync.rsync /backup/
[root@backup ~]# ls -ld /backup/
drwxr-xr-x 2 rsync rsync 4096 Mar  8 10:00 /backup/
?   【测试】
在客户端进行推送
在服务端进行查看校验:
5.1.2 rsync服务端共享目录权限不够
?   【错误实例】
?   【解决方法】
只需修改服务端共享目录的权限即可:
[root@backup ~]# ls -ld /backup/
drwxr-xr-x 2 root root 4096 Mar  8 10:26 /backup/
[root@backup ~]# chown -R rsync.rsync /backup/
[root@backup ~]# ls -ld /backup/
drwxr-xr-x 2 rsync rsync 4096 Mar  8 10:26 /backup/
?   【测试】
在客户端进行推送
[root@oldboy mail]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup/ --password-
file=/etc/rsync.password 
sending incremental file list
sent 101 bytes  received 8 bytes  218.00 bytes/sec
total size is 0  speedup is 0.00
在服务端进行查看校验
[root@backup ~]# cd /backup/
[root@backup backup]# ls
stu01  stu02  stu03  stu04  stu05  stu06  stu07  stu08  stu09  stu10
5.1.3 服务端缺少用户
?   【错误实例】
?   【解决方法】
[root@backup ~]# useradd rsync -s /sbin/nologin -M 
[root@backup ~]# id rsync
uid=501(rsync) gid=501(rsync) groups=501(rsync)
?   【测试】
在客户端进行推送
[root@oldboy mail]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup/ --password-
file=/etc/rsync.password 
sending incremental file list
sent 101 bytes  received 8 bytes  218.00 bytes/sec
total size is 0  speedup is 0.00
 
在服务端查看校验
[root@backup ~]# cd /backup/
[root@backup backup]# ls
stu01  stu02  stu03  stu04  stu05  stu06  stu07  stu08  stu09  stu10
 
5.1.4 客户端在推送时模块多一个斜线
?   【错误实例】
 
?   【解决方法】
把多的斜线去掉即可
5.2 客户端错误
5.2.1 客户端密码文件不对
?   【错误实例】
?   【解决方法】
修改密码文件
?   【测试】
在客户端进行推送:
[root@oldboy backup]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup/ --password-
file=/etc/rsync.password
在服务端进行查看校验:
[root@backup ~]# cd /backup/
[root@backup backup]# ls
stu01  stu02  stu03  stu04  stu05  stu06  stu07  stu08  stu09  stu10
标签:rsync服务的搭建
原文地址:http://blog.51cto.com/lzhnb/2084296