rsync备份服务

目标:熟练使用scp/rsyncd,牢记使用流程

拿到服务器后先检查有没有备份,然后看备份能不能用

用于不同主机之间数据传输(所有机器的备份数据存放在备份服务器中),主要解决数据不丢,辅助实现高可用

特点:
rsync是个服务也是个命令,具体看怎么配置
使用方便,具有多种模式
传输数据是增量传输:两边对比把新增的内容传输到目标主机
scp:全量传输

rsync作为命令的选项:
-v:显示过程
-z:传输数据时进行压缩(公网之间可以加,节省带宽但增加cpu消耗),正常数据少不用加,极限情况考虑加上-z,防止多台服务器同时传输数据,某时段带宽不够)
-a:等价于-rlptgoD:保持传输后文件各种属性不变
-P 显示传输每一个文件时的速度(显示进度条)
–bwlimit 公网传输时限速,不能与-z一起使用(不生效)👇限制500kb/s
rsync -avP –bwlimit=500kb /backup/2g rsync_backup@backup::data -password-file=/etc/rsync.client
–exclude-from 排除,后面写需要排除的文件,多个文件可以放在一个清单中
–delete 一般情况不加,当客户端的内容变化时,把客户端的文件传到服务端后将服务端不一致的内容删除,保证两端内容一致(一客户端为模板),一般用于实时同步场景,其他场景慎用

rsync企业应用场景

1.作为命令传输文件(作用同scp,一次只能连一台机器,即使循环连接多台也需要手动输入密码)
2.定时备份–rsync+定时任务 实现定时将数据传输到备份服务器
3.rsync实时同步(收集备份) sersync/lsyncd 监视nfs文件是否变化(单点问题:这个服务只有一台服务器)
4.数据备份传输到异地的服务器存放–异地容灾

scp与rsync使用对比

备份服务器要求:硬盘空间大,其他不做限制
实操:做服务前快照,本次涉及主机backup:10.0.0.41,nfs01:10.0.0.31
nfs01:scp -r /etc/root@backup:/tmp
发送nfs01上的/etc目录到backup的/tmp目录中
再次执行会再次全量传输,scp可用于临时传输文件
nfs01:rsync -avz /etc/sysconfig/ root@10.0.0.41:/mnt
本机的目录后加/表示传输此目录内的左右文件,不加/表示传输目录及里面的子文件夹
nfs01:touch /etc/sysconfig/{1..10} root@10.0.0.41:/mnt
此时只传输1-10(新增加的文件)

rsync使用模式

本地模式

将本地某目录/目录中的文件传输到目标文件夹,作用同cp/mv命令

rsync -av /etc/ /tmp etc目录中的所有文件传输到本机tmp目录中

远程模式

1.推送到远程服务器:
rsync -avz /etc/hostname root@backup:/tmp
2.将远程服务器上的内容拉取到本机
rsync -avz root@nfs01:/etc/hostname(目标文件) /tmp(本地目录)

守护进程模式

服务端:
1.检查是否安装软件包 rpm -qa | grep rsync
看软件包内容判断配置文件位置
配置文件:/etc/rsyncd.conf
2.配置文件格式:

uid = rsync
#在读写数据的时候是哪个用户(虚拟的用户-需要创建,无权访问系统上的交互式 shell,没有家目录)
gid = rsync
logfile = /var/log/rsyncd.log
#rsync服务端日志文件位置
auth users = rsync_backup
#建立连接后做验证的用户,不存在于系统中(不用添加)
secrets file = /etc/rsyncd.password
##rsync服务端用于验证的密码文件,文件格式 用户名:密码(上一条的用户名)
#以上内容固定(全局配置),正常情况不用变动
#其他配置
fake super = yes
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsync.pid
lock file = /var/run/rsync.lock
ignore errors = yes 
##=yes可写可不写,个别情况centos9不写会报错 read only = false list = false # 可选:允许IP或网段访问(示例) hosts allow = 192.168.1.0/24
# 可选:拒绝IP或网段访问(示例) hosts deny = 0.0.0.0/32 ##[data] ##模块名字,用户访问服务端时指定,共享哪个目录就写什么目录名 #comment = 备份wordpress服务器的html网页 #注释模块作用(文件夹内容等等) #path = /data ##指定模块对应的目录,所有者属于rsync用户 [backup] comment = dir backup path = /backup [html] comment = dir html path = /backup/html [etc] comment = dir etc path = /backup/etc

守护进程模式使用步骤:(配置文件写好之后)

目标:在生产服务器上创建定时任务将每天自动打包压缩的文件传到备份服务器,此时两台机器都要配置守护进程模式,但是源数据端可以不配置模块,因为不需要将其他服务器数据传到此服务器上,也就不用配置存放备份的文件夹
原因:只有配置守护进程模式才能使用模块功能自动免密传输::data -nopassword-file=/etc/rsync.client

配置流程:
两台机器:nfs01–源数据服务器,backup–备份服务器

backup端:

  1. useradd -s /sbin/nologin -M rsync##创建rsync用户
  2. echo “rsync_backup:1” > /etc/rsyncd.password && chmod 600 /etc/rsyncd.password ##被传输文件时,对方主机的rsync.client密码文件中写这个密码,rsync.client的内容为1
  3. mkdir -p /backup && chown -R rsync:rsync /backup ##创建存放备份的目录并设置目录所属主所属组均为rsync用户
  4. cat #centos9默认不提供systemd服务,rsyncd.service,需手动创建,centos7跳过这一步骤,
    cat > /etc/systemd/system/rsyncd.service <<EOF
    [Unit]
    Description=fast remote file copy program daemon
    After=network.target

    [Service]
    Type=forking
    ExecStart=/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
    ExecReload=/bin/kill -HUP $MAINPID

    [Install]
    WantedBy=multi-user.target
    EOF
  5. systemctl enable –now rsyncd  && ps -ef | grep rsync && ss -lntup | grep rsync#启动服务并检查进程以及端口
  6. firewall-cmd –permanent –add-port=873/tcp && firewall-cmd –permanent –add-service=rsyncd $$ firewall-cmd –reload##防火墙放行873端口
  7. sudo semanage fcontext -a -t rsync_data_t “/backup(/.*)?”  && sudo restorecon -Rv /backup &&  sudo setsebool -P rsync_full_access=1 && sudo setenforce 1##解除SELinux安全上下文值限制,允许 rsync 完全访问
  8. echo “1” > /etc/rsync.client && chmod 600 /etc/rsync.client 创建存放backup服务器的密码的密码文件,名字不重要,此文件存放目标服务器的密码
  9. rsync -av /etc/hostname rsync_backup@backup::backup –password-file=/etc/rsync.client##测试自己传自己(是否能够正常接收其他机器传过来的文件)@之后的backup是主机名(前提配置了/etc/hosts,::后面的表示模块名字,存放到哪个目录
  10. 至此配置完毕

nfs01端:只作为输出数据的服务器,无需配置rsyncd守护进程

  1. echo “1” > /etc/rsync.client && chmod 600 /etc/rsync.client 创建存放backup服务器的密码的密码文件,名字不重要,此文件存放目标服务器的密码
  2. rsync -av etc.tar.gz rsync_backup@backup::etc  –password-file=/etc/rsync.client ##测试传输到backup服务器(前提配置完host解析才能在@后写主机名)

此时传输成功,下一步编写nfs01定时打包压缩特定的文件夹并定时将压缩包传到备份服务器的shell脚本

rsync备份项目

项目背景:

1.完善已有项目 1-100
2.从无到有做项目 0-1

还可能是你发现的问题.(没有监控,备份不完全,代码上线流程不完善.每个人都是root权限问题.) (从0到1从头搭建或从1到100服务
完善)
遇到工作上发现的问题,可以准备下找出2-3个解决方案

发现问题👉找出解决方案
分析需求,后面在做项目的时候也要定期的汇报

项目分析

目标:数据备份

分析:备份什么,定时/实时备份

备份配置文件,脚本,日志文件.

项目实施步骤(概述图):

项目实施步骤(详细):

 

1.项目ip地址规划


拿到新的机器:
配置hosts解析
cat >>/etc/hosts  <<EOF
内网ip 主机名
….
EOF

2.rsync服务端与客户端

服务端主要步骤修改配置文件.

添加模块backup 对应的目录/backup/
#####################################
[backup]
comment = backup文件夹存放备份文件
path = /backup

客户端测试.

rsync  -avz /etc/hosts rsync_backup@backup::backup --password-file=/etc/rsync.client

rsync  -avz /etc/hosts rsync_backup@172.16.1.41::backup  --password-file=/etc/rsync.client

3.rsync客户端上的备份脚本

定时任务脚本

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部