rsync 服务总结
目录
rsync 服务总结 1
第1章 rsync简介 3
1.1 什么是rsync 3
1.2 rsync的特性 3
1.3 rsync常用选项 3
1.4 rsync的三种工作模式 4
1.4.1 本地模式 4
1.4.2 ssh通道模式(shell模式) 4
1.4.3 daemon模式 5
第2章 rsync daemon模式的配置 6
2.1 服务端的配置 6
2.1.1 查看安装环境 6
2.1.2 查看是否有rsync安装包 6
2.1.3 添加rsync用户,用来管理本地目录 6
2.1.4 生成配置文件/etc/rsyncd.conf(该文件默认是不存在的) 6
2.1.5 启动并检查是否启动成功 8
2.1.6 建立共享目录并赋予权限 8
2.1.7 创建密码文件并编辑 8
2.1.8 更改密码文件的权限并检查 8
2.1.9 查看rsync服务的端口 8
2.1.10 将rsync服务加入开机自启动 9
2.2 客户端配置步骤 9
2.2.1 建立密码文件,只需在文件中写入密码即可 9
2.2.2 给密码文件设置权限 9
2.2.3 建立打包目录 9
2.3 测试 9
2.3.1 在客户端建立测试文件 9
2.3.2 测试命令 9
2.4 rsync多模块的配置 10
2.4.1 编辑配置文件/etc/rsyncd.conf 10
2.4.2 创建目录并赋予权限 11
2.4.3 重启rsync服务 11
2.4.4 在客户端进行测试 11
2.5 rsync多用户的配置 11
2.5.1 编辑配置文件/etc/rsyncd.conf 11
2.5.2 创建密码文件/etc/rsync.password.oldboy 12
2.5.3 在客户端进行测试 12
第3章 服务模式排除及无差异同步 12
3.1 服务模式排除 12
3.2 无差异同步 13
第4章 企业案列 13
4.1 案例1 13
4.2 案例2 13
第5章节 错误重现 13
5.1 服务端错误 13
5.1.1 rsync服务端缺少共享目录 13
5.1.2 rsync服务端共享目录权限不够 14
5.1.3 服务端缺少用户 15
5.1.4 客户端在推送时模块多一个斜线 16
5.2 客户端错误 16
5.2.1 客户端密码文件不对 16
第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 选项 源 目的
? 【实例】
[[email protected] 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
[[email protected] tmp]# ls
hosts
1.4.2 ssh通道模式(shell模式)
? 【格式】
rsync 选项 源 用户@远端主机:远端目录 (推动作)
rsync 选项 用户@远端主机:远端目录 源 (拉动作)
? 【实例】
###################################推动作######################################
[[email protected] tmp]# rsync -avz /etc/hosts -e ‘ssh -p 22‘ [email protected]:/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.
[email protected]‘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
####################################拉动作#####################################
[[email protected] tmp]# rsync -avz -e ‘ssh -p 22‘ [email protected]:/tmp/ /tmp/
[email protected]‘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
[[email protected] tmp]# ls
hosts
1.4.3 daemon模式
? 【格式】
rsync 选项 源 用户@主机::模块 --password-file=客户端密码配置文件(推动作)
rsync 选项 用户@主机::模块 目的目录 --password-file=客户端密码配置文件(拉动作)
? 【实例】
######################################拉动做###################################
[[email protected] ~]# rsync -avz [email protected]::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
[[email protected] ~]# cd /tmp/
[[email protected] tmp]# ls
stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10
######################################推动做###################################
[[email protected] tmp]# rsync -avz /tmp/ [email protected]::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 查看安装环境
[[email protected] ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[[email protected] ~]# uname -r
2.6.32-696.el6.x86_64
2.1.2 查看是否有rsync安装包
[[email protected] ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
注意:若没有该安装包,可以通过yum进行安装,安装命令如下:
[[email protected] ~]# yum install -y rsync
2.1.3 添加rsync用户,用来管理本地目录
[[email protected] ~]# useradd rsync -s /sbin/nologin -M
[[email protected] ~]# id rsync
uid=501(rsync) gid=501(rsync) groups=501(rsync)
注意:该用户是虚拟用户,不需要进行登录
2.1.4 生成配置文件/etc/rsyncd.conf(该文件默认是不存在的)
[[email protected] ~]# 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
[[email protected] ~]# 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 启动并检查是否启动成功
[[email protected] ~]# rsync –daemon
[[email protected] ~]# ps -ef |grep rsync|grep -v grep
2.1.6 建立共享目录并赋予权限
[[email protected] ~]# mkdir /backup/
[[email protected] ~]# chown -R rsync.rsync /backup/
[[email protected] ~]# ls -ld /backup/
注意:如果目录不存在,会报错,详细错误见下面的错误总结
2.1.7 创建密码文件并编辑
[[email protected] ~]# vim /etc/rsync.password
[[email protected] ~]# cat /etc/rsync.password
rsync_backup:123456
注意:密码文件的格式为: 用户:密码
2.1.8 更改密码文件的权限并检查
[[email protected] ~]# chmod 600 /etc/rsync.password
[[email protected] ~]# ls -l /etc/rsync.password
-rw------- 1 root root 20 Jan 16 20:21 /etc/rsync.password
注意:密码文件的权限是600
2.1.9 查看rsync服务的端口
[[email protected] ~]# 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)
[[email protected] ~]# 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服务加入开机自启动
[[email protected] ~]# echo "/usr/bin/rsync --daemon" >>/etc/rc.local
[[email protected] ~]# tail -1 /etc/rc.local
/usr/bin/rsync --daemon
2.2 客户端配置步骤
2.2.1 建立密码文件,只需在文件中写入密码即可
[[email protected] ~]# vim /etc/rsync.password
[[email protected] ~]# cat /etc/rsync.password
123456
2.2.2 给密码文件设置权限
[[email protected] ~]# chmod 600 /etc/rsync.password
[[email protected] ~]# ls -l /etc/rsync.password
-rw------- 1 root root 7 Mar 8 10:56 /etc/rsync.password
注意:密码文件的权限是600
2.2.3 建立打包目录
[[email protected] ~]# mkdir /backup/
2.3 测试
2.3.1 在客户端建立测试文件
[[email protected] ~]# cd /backup/
[[email protected] backup]# touch {01..10}
[[email protected] backup]# ls
stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10
2.3.2 测试命令
【方法1】
[[email protected] backup]# rsync -avz /backup/ [email protected]::backup/ --password-
file=/etc/rsync.password
【方法2】
[[email protected] backup]# rsync -avz /backup/ rsync://[email protected]/backup/ --
password-file=/etc/rsync.password
2.4 rsync多模块的配置
2.4.1 编辑配置文件/etc/rsyncd.conf
[[email protected] oldboy]# vim /etc/rsyncd.conf
[[email protected] 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 创建目录并赋予权限
[[email protected] ~]# mkdir /oldboy/
[[email protected] ~]# chown -R rsync.rsync /oldboy/
[[email protected] ~]# ls -ld /oldboy/
2.4.3 重启rsync服务
[[email protected] ~]# pkill rsync
[[email protected] ~]# ps -ef |grep rsync |grep -v grep
[[email protected] ~]# rsync --daemon
2.4.4 在客户端进行测试
[[email protected] ~]# rsync -avz /backup/ [email protected]::oldboy/ --password-
file=/etc/rsync.password
2.5 rsync多用户的配置
2.5.1 编辑配置文件/etc/rsyncd.conf
[[email protected] ~]# vim /etc/rsyncd.conf
[[email protected] ~]# 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
[[email protected] ~]# vim /etc/rsync.password.oldboy
[[email protected] ~]# cat /etc/rsync.password.oldboy
test:123456
2.5.3 在客户端进行测试
[[email protected] ~]# rsync -avz /backup/ [email protected]::oldboy/ --password-
file=/etc/rsync.password
注意:文档中多模块及多用户的配置都是在daemon服务搭好的基础上进行的
第3章 服务模式排除及无差异同步
3.1 服务模式排除
? 【命令】
[[email protected] backup]# rsync -avz --exclude=a /backup/ [email protected]::backup/ --
password-file=/etc/rsync.password #排除一项
[[email protected] backup]# rsync -avz --exclude={a..g} /backup/ [email protected]::backup/ --password-file=/etc/rsync.password #排除连续多项
[[email protected] backup]# rsync -avz --exclude={a,c} /backup/ [email protected]::backup/ --password-file=/etc/rsync.password #排除不连续的多项
3.2 无差异同步
? 【命令】
[[email protected] backup]# rsync -avz --delete /backup/ [email protected]::backup/ --
password-file=/etc/rsync.password
注意:该项尽可能的不用否则会引起血的惨案
第4章 企业案列
4.1 案例1
某运维人员在做数据备份,导致带宽被占满,致使用户无法访问网站
4.2 案例2
某视频网站的运维人员在往线上服务器上发布视频时,使用了无差异同步(如下命令),导致服务器上之前的视频全部被清空,只留下当天推送的视频
[[email protected] backup]#rsync -avz --delete /backup/ [email protected]::backup/ --
password-file=/etc/rsync.password
第5章节 错误重现
5.1 服务端错误
5.1.1 rsync服务端缺少共享目录
? 【错误实例】
? 【解决方法】
只需在服务端创建共享目录,然后赋予其权限即可
[[email protected] ~]# mkdir /backup
[[email protected] ~]# ls -ld /backup/
drwxr-xr-x 2 root root 4096 Mar 8 10:00 /backup/
[[email protected] ~]# chown -R rsync.rsync /backup/
[[email protected] ~]# ls -ld /backup/
drwxr-xr-x 2 rsync rsync 4096 Mar 8 10:00 /backup/
? 【测试】
在客户端进行推送
在服务端进行查看校验:
5.1.2 rsync服务端共享目录权限不够
? 【错误实例】
? 【解决方法】
只需修改服务端共享目录的权限即可:
[[email protected] ~]# ls -ld /backup/
drwxr-xr-x 2 root root 4096 Mar 8 10:26 /backup/
[[email protected] ~]# chown -R rsync.rsync /backup/
[[email protected] ~]# ls -ld /backup/
drwxr-xr-x 2 rsync rsync 4096 Mar 8 10:26 /backup/
? 【测试】
在客户端进行推送
[[email protected] mail]# rsync -avz /backup/ [email protected]::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
在服务端进行查看校验
[[email protected] ~]# cd /backup/
[[email protected] backup]# ls
stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10
5.1.3 服务端缺少用户
? 【错误实例】
? 【解决方法】
[[email protected] ~]# useradd rsync -s /sbin/nologin -M
[[email protected] ~]# id rsync
uid=501(rsync) gid=501(rsync) groups=501(rsync)
? 【测试】
在客户端进行推送
[[email protected] mail]# rsync -avz /backup/ [email protected]::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
在服务端查看校验
[[email protected] ~]# cd /backup/
[[email protected] backup]# ls
stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10
5.1.4 客户端在推送时模块多一个斜线
? 【错误实例】
? 【解决方法】
把多的斜线去掉即可
5.2 客户端错误
5.2.1 客户端密码文件不对
? 【错误实例】
? 【解决方法】
修改密码文件
? 【测试】
在客户端进行推送:
[[email protected] backup]# rsync -avz /backup/ [email protected]::backup/ --password-
file=/etc/rsync.password
在服务端进行查看校验:
[[email protected] ~]# cd /backup/
[[email protected] backup]# ls
stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10
原文地址:http://blog.51cto.com/lzhnb/2084296