标签: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