rsync远程传输-守护进程模式

rsync服务建立步骤

1、安装rsync工具

yum install rsync -y

2、修改配置文件

vim /etc/rsyncd.conf

3、将配置文件自定义为

uid = zjh (进程的写入身份) gid = zjh (进程写入的组身份) port = 873 (rsync端口) fake super = yes (不需要rsync以root权限运行就能储存文件的完整性) use chroot = no (禁锢推送的数据至某个目录,不允许跳出该目录) max connections = 200 (最大连接数) timeout = 600 (超时时间) ignore errors (忽略错误) read only = false (禁止只读,允许读写) list = false (查看模块的名称和模块的信息描述)(false为禁止,true为允许) auth users = zjh_backup (定义虚拟用户的名称,这个名称不存在于系统中,仅为rsync用) secrets file = /etc/zjh.passwd (在这个文件中填写虚拟用户的密码)(用户名:密码) log file = /var/log/rsyncd.log (日志文件的位置) #################################### [backup](模块名称) comment = welcome to zjh backup! (注释信息) path = /backup (模块对应的具体位置)

4、根据配置文件进行初始化操作

4.1 创建rsync用户

useradd zjh -r -M

4.2 配置rsync虚拟用户,并修改rsync.passwd的权限为640,(用于链接rsync服务端)(文件权限中的other不能有权限)

echo "zjh_backup:1" > /etc/zjh.passwd

chmod 640 /etc/zjh.passwd

4.3 根据配置文件的信息创建模块对应的目录,并修改文件的属主属组为zjh 修改backup目录权限为755(path = /backup)

mkdir /backup -p

chown -R zjh.zjh /backup

chmod 755 /backup/

4.4 启动,并且加入开机自启动

systemctl enable --now rsyncd

systemctl enable rsyncd

systemctl start rsyncd

4.5 检查服务端口

netstat -lntp 或 ss -ntl

4.6 关闭防火墙和selinux

systemctl stop firewalld

setenforce 0

附加:完整配置文件(无注释版)

uid = zjh gid = zjh port = 873 fake super = yes use chroot = no max connections = 200 timeout = 600 ignore errors read only = false list = false auth users = zjh_backup secrets file = /etc/zjh.passwd log file = /var/log/rsyncd.log #################################### [backup] comment = welcome to zjh backup! path = /backup

推送命令 (将当前主机的文件推送到备份主机的备份模块里)

rsync -avz +需要推送的文件或目录 +虚拟用户名称@目标主机的内网地址::模块名

拉取命令 (将备份主机的备份模块里的文件拉取到当前主机里)

rsync -avz +虚拟用户名称@目标主机的内网地址::模块名 +需要拉取到哪个位置

客户端免密实现传输和拉取

第一种 --password-file (实时同步需求)

echo "1" > /etc/rsync.pass (创建一个存储rsync密码的文件)

chmod 600 /etc/rsync.pass (修改文件的权限为600,other位不能有权限)

rsync -avzP /opt/bigdate zjh_backup@172.16.1.33::backup --password-file=/etc/rsync.pass (推送命令后接上--password-file=存放密码的文件)

第二种 export RSYNC_PASSWORD (写脚本需求)

export RSYNC_PASSWORD=1 (声明当前主机的rsync密码为1,切换主机后不能使用)

--delete无差别推送/拉取参数 (两台机的内容没有差别,当需要两台主机的文件内容需要完全一致时考虑使用)

无差别推送:

A主机有什么内容,B主机就有什么内容

无差别拉取:

B主机有什么内容,A主机就有什么内容

--bwlimit 限速

rsync -avzP --bwlimit 10 /opt/bigdate zjh_backup@172.16.1.33::backup --password-file=/etc/rsync.pass

限制文件传输速度为10MB(--bwlimit限制速度单位为MB)

常用选项

rsync自动备份脚本编写

客户端部署

定义变量名

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

Path=/backup

Host=$(hostname)

Addr=$(ifconfig eth1 | awk 'NR==2{print $2}')

Date=$(date +%F)

Dest=${Host}_${Addr}_${Date}

创建备份目录

mkdir -p $Path/$Dest

将备份数据拷贝进备份目录中

cd / && \ tar czf $Path/$Dest/sys.tar.gz etc/hosts etc/fstab var/spool/cron/ && \ tar czf $Path/$Dest/other.tar.gz /scripts

创建md5值

md5sum $Path/$Dest/*.tar.gz > $Path/$Dest/flags_${Date}

设定密码,然后将备份文件推送至备份主机的备份模块下

export RSYNC_PASSWORD=1

rsync -avz $Path/ rsync_backup@172.16.1.31::backup

只保留最近七天的数据

find $Path/ -maxdepth 1 -type d -mtime +7 | xargs rm -rf

服务端部署

配置邮件服务

yum install mailx -y

vim /etc/mail.rcs

set from=2561884249@qq.com set smtp=smtps://smtp.qq.com:465 set smtp-auth-user=2561884249@qq.com set smtp-auth-password=邮箱授权码 set smtp-auth=login set ssl-verify=ignore set nss-config-dir=/etc/pki/nssdb/

vim /etc/scripts/check_date.sh

定义变量

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

Path=/backup

Date=$(date +%F)

验证

md5sum -c $(find $Path/ -type f -name "flags_${Date}") > $Path/result

结果通知
1、配置为邮箱服务器->发邮件功能(详情看配置邮件服务)
2、配置发邮件的内容

mail -s "Rsync Backup ${Date}" 2561884249@qq.com < $Path/result

保留最近180天的文件

find $Path/ -maxdepth 1 -type d -mtime +180 | xargs rm -rf

设定定时任务

服务端设置定时执行脚本

crontab -e

#每天凌晨一点自动备份一次 0 1 * * * sh /scripts/check_date.sh &>/dev/null

#客户端设置定时执行脚本

#每天凌晨一点自动备份一次 0 1 * * * sh /scripts/client_push_data.sh &>/dev/null &>/dev/null

流程图