2.3备份服务器-rsync守护进程(daemon)数据传输
1.部署环境
操作系统:
CentOS 6.10
位数:
x86_64
内核:
2.6.32-754.el6.x86_64
rsync版本:
3.0.6
查看rsync是否安装:
rpm -qa rsync --如没有采用yum安装:yum install rsync -y
2.daemon模式搭建
2.1创建配置文件
配置文件默认不存在
vim /etc/rsyncd.conf
# GLOBAL OPTIONS,全局配置
uid = rsync #进程用户:远端的命令使用rsync访问共享目录
gid = rsync #进程用户组
use chroot = no #安全相关
max connections = 20 #最大连接数
timeout = 300 #超时时间(单位/秒)
pid file = /var/run/rsyncd.pid #进程对应的进程号文件
lock file = /var/run/rsync.lock #锁文件
log file = /var/log/rsyncd.log #日志文件
# MODULE OPTIONS,模块配置
[backup] #模块名称
path = /backup #服务器提供访问的目录
ignore errors #忽略错误
read only = false #可读
list = false #不能列表(ls)
hosts allow = 192.168.47.0/24 #允许的网段
# hosts deny = 0.0.0.0/32 #拒绝的网段,二选一
auth users = rsync_backup #独立于系统之外的虚拟用户
secrets file = /etc/rsync.password #虚拟用户对用的密码
rsync配置文件可通过:https://download.****.net/download/cen50958/11114985 下载
2.2添加rsync用户
创建系统虚拟用户,不需要登录,不需要建家目录
useradd rsync -s /sbin/nologin -M
检查:
[[email protected] ~]# id rsync
uid=501(rsync) gid=501(rsync) groups=501(rsync)
[[email protected] ~]# tail -1 /etc/passwd
rsync:X:501:501::/home/rsync:/sbin/nologin
2.3启动服务
rsync --daemon
检查:
[[email protected] ~]# ps -ef|grep rsync|grep -v grep
root 9837 1 0 21:14 ? 00:00:00 rsync --daemon
查看端口:
lsof -i :873
netstat -ntlp|grep 873
2.4创建backup目录
mkdir /backup
chown rsync.rsync /backup/ -->设置属主
2.5创建密码文件
文件格式:用户名:密码
vim /etc/rsync.password
或: echo “rsync_backup:123456” >>/etc/rsync.password
由于密码明文,且其他用户可读,则修改权限为600
chmod 600 /etc/rsync.password
ls /etc/rsync.password -l
2.6加入开机自启动
echo “/usr/bin/rsync --daemon” >>/etc/rc.local
检查:
2.7 客户端操作
- 查看rsync是否安装:
rpm -qa rsync --如没有采用yum安装:yum install rsync -y- 设置密码文件
echo “123456” >/etc/rsync.password- 修改密码文件权限
chmod 600 /etc/rsync.password![]()
- 推送
法一:
rsync -avz /root/data [email protected]::backup --password-file=/etc/rsync.password
解析:
rsync --命令
-avz --名称参数
/root/data --需要推送的目录,会将data整个目录一起推送
区别:/root/data/ 会将data下面的内容推送
rsync_backup 虚拟用户
192.168.47.51 主机地址
::backup 服务端配置的模块名
–password-file=/etc/rsync.password 客户端密码文件
法二:
rsync -avz /root/data/ rsync://[email protected]:873/backup --password-file=/etc/rsync.password
解析:
rsync --命令
-avz --名称参数
/root/data --需要推送的目录,会将data整个目录一起推送
rsync:// --rsync协议
rsync_backup --虚拟用户
192.168.47.51 --主机地址
:873 --端口地址
/backup --目录,只能模块下对应的目录路径
--password-file=/etc/rsync.password --客户端密码文件
- 拉取
法一:
rsync -avz [email protected]::backup /root/backup/ --password-file=/etc/rsync.password
法二:
rsync -avzp rsync://[email protected]:873/backup/ /root/backup --password-file=/etc/rsync.password
- 排除同步(客户端排除)
排除a目录:
rsync -avzp --exclude=a /root/data/ rsync://[email protected]:873/backup/ --password-file=/etc/rsync.password
排除a,b,c目录:
rsync -avzp --exclude={a,b,c} /root/data/ rsync://[email protected]:873/backup/ --password-file=/etc/rsync.password
无差异同步(谨慎使用)
rsync -avzp --delete /root/data/ rsync://[email protected]:873/backup/ --password-file=/etc/rsync.password
2.8 结束服务
pkill rsync
检查:
[[email protected] ~]# ps -ef|grep rsync
[[email protected] ~]# netstat -ntlp|grep 873
3.配置文件参数详解
参数 | 说明 | 默认值 |
---|---|---|
address | 指定的服务器运行的 IP 地址 | 本地所有IP |
port | 端口号,默认值:873 | 873 |
motd file | 指定一个消息文件,当客户连接服务器时该文件的内容显示给客户 | 无 |
pid file | pid文件 | 无 |
log file | 守护进程日志文件 | 无 |
syslog facility | rsync 发送日志消息给 syslog 时的消息级别 | daemon |
socket options | 指定自定义 TCP 选项 | 无 |
path | 指定当前模块在 rsync 服务器上的同步路径,该参数是必须指定的 | 无 |
comment | 给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户 | 无 |
use chroot | 安全相关 | true |
uid | #进程用户:远端的命令使用rsync访问共享目录 | nobody |
gid | 进程用户组 | nobody |
max connections | 最大连接数 | 0(没有限制) |
lock file | 锁文件 | /var/run/syncd.lock |
list | 列表(ls) | true |
read only | 指定是否允许客户上传文件 | true |
write only | 指定是否允许客户下载文件 | false |
ignore errors | 指定 在 rsync 服务器上运行 delete 操作时是否忽略 I/O 错误 | true |
ignore nonreadable | 指定 rysnc 服务器完全忽略那些用户没有访问权限的文件 | false |
timeout | 超时时间 | 0(未限制) |
dont compress | 用来指定那些在传输之前不进行压缩处理的文件 | *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz |
exclude | 指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 exclude 列表中 | 空 |
exclude from | 指定一个包含 exclude 规则定义的文件名,服务器从该文件中读取exclude 列表定义 | 空 |
include | 指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 include 列表中 | 空 |
include from | 指定一个包含 include 规则定义的文件名,服务器从该文件中读取 include 列表定义 | 空 |
auth users | 指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块 | (匿名方式) |
secrets file | 指定一个 rsync 认证口令文件空 | |
strict modes | 指定是否监测口令文件的权限 | true |
hosts allow | 指定哪些主机客户允许连接该模块 单个IP地址。例如:192.168.0.1 整个网段。例如:192.168.0.0/24192.168.0.0/255.255.255.0 可解析的单个主机名。例如:centos,centos.smartraining.cn 域内的所有主机。例如:.smartraining.cn ""则表示所有。 多个列表项要用空格间隔,例如:192.168.1.1 192.168.1.2 |
* |
hosts deny | 指定哪些主机客户不允许连接该模块 | 空 |
transfer logging | 使 rsync 服务器将传输操作记录到传输日志文件 | false |
log format | 指定传输日志文件的字段 %a - 远程IP地址 %h - 远程主机名 %l - 文件长度字符数 %p - 该次 rsync 会话的 PID %o - 操作类型:”send” 或 “recv” %f - 文件名 %P - 模块路径 %m - 模块名 %t - 当前时间 %u - 认证的用户名(匿名时是 null) %b - 实际传输的字节数 %c - 当发送文件时,记录该文件的校验码 %o %h [%a] %m (%u) %f %l |
4.rsync优缺点
-
优点:
增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物)
远程SHELL通道模式还可以加密(SSH传输),socket(daemon)需要加密传输,可以利用v*n服务或ipsec服务 -
缺点:
大量小文件同步的时候,比对时间较长,有时候,rsync进程可能会停止
同步大文件,10G这样的大文件有时也会问题,中断。未完整同步前,是隐藏文件,可以通过续传等参数实现传输
一次性远程拷贝可以用scp