rsync 实现文件同步 (重要数据通过rsyncr把数据同步到不同的两台服务器上,这样可以防止服务器的硬盘故障导致数据丢失) 客户端同步时如果要排某个目录

时间:2024-03-01 19:29:09

 

rsync是unix系统下的数据镜像 备份工具,一般linux系统都 自带:

# rpm -qa|grep rsync
rsync-3.0.9-17.el7.x86_64

 服务器端:10.100.0.123 同步目录:/data/samba/share

 客户端:10.100.0.198 同步到目录:/DataBack/SambaBack

1:服务端配置:

新建配置文件:/etc/rsyncd.conf #并配置以下内容:

# cat /etc/rsyncd.conf 
uid=nobody //运行rsync守护进程的用户
git=nobody //运行rsync守护进程的组
use chroot = no //不使用chroot
max connections = 10 //最大连接数,0为不限制
pid file = /var/run/rsyncde.pid //pid文件存放位置 
lock file = /var/run/rsync.lock //锁文件存放位置 
log file = /var/log/rsyncd.log //日志记录文件 的存放位置
Timeout = 300 //通过该选项可以覆盖客户指定的ip超时时间,通过该选项可以确保rsync服务器
不会永远等待一个崩溃的客户端,超时单位为秒钟,0表示没有超时定义,这也是默认值,
对于匿名rsync服务器来说,一个理想的数字是600
Log format = %t %a %m %f %b
[backup] //这里是认证的模块名,在client端需要指定
#path=/home/source/
path=/data/tmp/samba/share/ //需要做镜像目录
ignore errors //可以忽略一些无关的IO错误
read only = yes //该选项设定是否允许客户上传文件
list = no //不允许列文件 
auth users = rsync //认证的用户名
secrets file = /etc/rsyncd.secrets //秘密文件
hosts allow = 10.100.0.198 //允许主机或网段
hosts deny = 0.0.0.0/0 //禁止主机

 创建密码文件,并增加用户和密码:

# cat /etc/rsyncd.secrets 
rsync:rsync

 更改密码文件权限:

# chmod 0600 /etc/rsyncd.secrets
# ll -h /etc/rsyncd.secrets 
-rw------- 1 root root 12 May 11 13:27 /etc/rsyncd.secrets

# /usr/bin/rsync --daemon

启动服务默认端口:873

客户端:

客户端就不用启动rsync服务了

创建密码文件,文件名自定义,但内容需要填相标服务授权密码

# cat /etc/rsyncd.secrets 
rsync
#列改文件权限
#chmod 0600 /etc/rsyncd.secrets

 在客户端去同步服务端的数据,所以要在服务端运行:

rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd.secrets rsync@10.100.0.123::backup /DataBack/SambaBack

 参数详解:

v:传输时的进度等信息,z:表示压缩,r:是递归,t:保持文件原有时间,o:保持文件原有属主,P:传输进度,g:保持文件原有用户组
--progress :指显示
--delete:指如果服务器端删除了这一文件,那么客户端也想应把文件删除,保持真正的一致
--password-file=/etc/sysncd.secrets:认证密码
rsync:认证用户
backup:认证模块

写脚本并结合计划任务来定时同步数据:

# cat /data1/sh/rsync_samba.sh 
#!/bin/bash
rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd.secrets rsync@10.100.0.123::backup /DataBack/SambaBack
查看定时任务:
0 2 * * * cd /data1/sh &&  ./rsync_samba.sh