进行下面操作之前请确认是否安装rsync,如果没有安装执行下面命令安装
yum -y install rsync
或者
apt -y install rsync
以下操作我使用了两台服务器,一台提供rsync服务,一台为客户机
rsync服务ip:192.168.233.102
客户机ip:192.168.233.101
-
rsync配置解释
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 = 192.168.233.101/24 #测试的客户机IP #hosts deny = 0.0.0.0/32 #这个是禁止全部网段访问 auth users = rsync_data secrets file = /etc/rsync.password ##################################### [data] comment = www by old0boy 14:18 2022-1-13 path = /home/datafake super = yes:这个选项允许rsync服务以非root用户身份运行时,仍然拥有某些超级用户权限。这通常用于安全原因,避免直接使用root账户。uid = rsync:指定rsync服务运行时的用户ID,这里设置为rsync用户。gid = rsync:指定rsync服务运行时的组ID,这里设置为rsync组。use chroot = no:不使用chroot环境,即不将rsync模块目录更改为根目录。max connections = 2000:允许的最大并发连接数设置为2000。timeout = 600:超时时间设置为600秒,即如果在600秒内没有数据传输,连接将被关闭。pid file = /var/run/rsyncd.pid:rsync服务的进程ID文件路径。lock file = /var/run/rsync.lock:rsync服务的锁文件路径,用于确保服务不会重复启动。log file = /var/log/rsyncd.log:rsync服务的日志文件路径。ignore errors:忽略I/O错误。read only = false:设置rsync模块为可写。list = false:不允许列出模块中的文件列表。#hosts allow = 10.0.0.0/24:这一行被注释掉了,如果取消注释,它将允许10.0.0.0/24网段的IP地址访问。#hosts deny = 0.0.0.0/32:这一行也被注释掉了,如果取消注释,它将拒绝所有IP地址访问。auth users = rsync_backup:指定认证用户为rsync_backup。secrets file = /etc/rsync.password:存储认证用户密码的文件路径。
接下来的部分定义了一个名为
data的rsync模块:[data]:模块名称。comment = www by old0boy 14:18 2012-1-13:模块的注释信息。path = data:模块对应的本地路径,即rsync服务将同步或传输的目录。
-
启动服务rsync服务
systemctl enable rsyncd systemctl start rsyncd -
检查进程 ps -ef |grep rsync
ps -ef |grep rsync -
检查端口
ss -lntup |grep rsync -
添加虚拟用户
useradd -s /sbin/nologin -M rsync -
创建密码文件并且分配权限
echo 'rsync_backup:123' >/etc/rsync.password && chmod 600 /etc/rsync.password -
创建目录并将目录分配用户组
mkdir -p /home/data && chown -R rsync:rsync /home/data -
测试
下面命令在一台新的服务器执行
#创建a.txt文件 #注意192.168.233.102为提供rsync服务的IP地址 touch a.txt && rsync -avz a.txt rsync_data@192.168.233.102::data -
注意:在测试的时候请保证两台服务器可以ping通,还有防火墙打开873端口
-
其它操作
-
免密备份
以下操作在客户机进行
-
创建密码文件
echo '12345' >/etc/rsync.client -
修改权限
chmod 600 /etc/rsync.client -
测试
rsync -avz a.txt rsync_data@192.168.233.102::data --password-file=/etc/rsync.client
-
-
文件校验
md5usm data.txt >etc.all.md5 #将上生的md5指纹保存在etc.all.md5文件中 md5usm -c etc.all.md5 #查看校验结果。注意:只要修改data.txt文件内容校验就会失败 md5usm --quiet -c etc.all.md5 #只查看失败的校验结果 -
创建备份脚本
特别注意:脚本创建前请确认备份路径文件、推送用户、ip、密码是否正确
cat <<EOF>> rsync.sh ip=`hostname -I |awk '{print $1}'` #获取本地服务器IP time=`date +%F_%H-%M-%S_%w` #获取时间 data_file=data-${time}.tar.gz #备份文件命名(根据自己需求修改) path_url=/home/data.txt #备份路径或者要备份的文件 tar zcf ${data_file} ${path_url} #压缩 rsync -avz ${data_file} rsync_data@192.168.233.102::data --password-file=/etc/rsync.client #推送备份 rm -rf ${data_file} #删除备份 EOF
-
