一、初识
1、rsync分为服务器端和客户端,服务器端接收,客户端主动定时发起同步。
二、安装
是否已安装
rsync + 回车 出现帮助信息则已安装
命令安装
yum install rsync -y
ps:服务器端和客户端都需要安装
三、添加rsync虚拟用户
# useradd rsync -s /sbin/nologin(不登录) -M(不创建家目录)
useradd rsync -s /sbin/nologin -M
四、创建rsync虚拟用户密码
服务端:echo "rsync:backup200" > /etc/rsyncd.password
客户端:echo "backup200" > /etc/rsyncd.password
chmod 600 /etc/rsyncd.password
注意:客户端创建密码时,语法不一样,只需要密码就行!! echo “backup200”
/etc/rsyncd.password
Ps:此时会在/etc目录下,创建一个rsyncd.password文件,内置密码。
如果需要每个不同的机器使用不同的密码,可以编辑文件,一行一个密码亦可。
五、检查
查用户
grep rsync /etc/passwd
查密码
# /etc/rsyncd.password
cat /etc/rsyncd.password
五、配置服务端
vim /etc/rsyncd.conf
Ps:配置信息详情内容见末尾
六、启动
systemctl restart rsyncd
查看执行情况
ps -ef |grep rsync
七、客户端安装操作
#客户端只需要执行 二、三、四步骤即可,客户端无需启动,只要在执行同步语句的时候 /usr/bin/rsync
,rsync自动提示即可,若不放心,首次可手动执行,能正常同步文件即成功。
八、客户端执行上传同步
手动执行:
/usr/bin/rsync -pogrtl 文件路径 虚拟用户@服务端ip::当前服务器虚拟用户在服务器端配置文件中的执行名称 --password-file=/etc/rsyncd.password
/usr/bin/rsync -pogrtl /data/logs/api/ rsync@10.10.xxxx::backup27 --password-file=/etc/rsyncd.password
自动执行
使用定时任务执行相关语句即可,[crontab用法](https://blog.csdn.net/luck_jinwei/article/details/131854018?spm=1001.2014.3001.5502)
定时任务配置:
0 0 * * * root 执行语句
记得需要重启定时任务,较新版本系统:systemctl restart crond
问题记录: 1、修改服务端配置文件之后,需要重启,执行重启语句 systemctl restart rsyncd 即可。
2、服务端需要创建对应配置文件的文件夹,否则客户端无创建文件夹权限,导致同步失败。
3、服务端创建文件夹之后,需要赋权,指定用户权限。
chown rsync.rsync -Rf 文件夹名
4、显示已安装,能出现帮助信息,但是执行启动的时候,出现 -bash:
systemctl: command not found ,可能是系统版本过低,没有systemctl指令。
附录一、服务端配置
###rsyncd.conf start##
fake super = yes
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
#hosts allow = 10.0.0.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync
secrets file = /etc/rsyncd.password
############使用[]中不同的名称来区别客户端文件保存位置,需要和客户端执行语句中的名称一致 ##################
[backup27]
comment = '测试环境日志'
path = /backup/5/
[backup90]
comment = '日志4'
path = /backup/4/
[backup91]
comment = '日志3'
path = /backup/3/
[backup245]
comment = '日志2'
path = /backup/2/
[backup144]
comment = '日志1'
path = /backup/1/