Remote Syns 远程同步/增量备份

本文介绍了rsync源服务器的配置,它是一款开源快速备份工具,支持增量备份等。详细说明了配置步骤,包括建立配置文件、账号文件等。还介绍了Rsync备份工具的命令用法、配置源表示方法及免交互处理。最后结合inotify机制实现rsync实时同步,避免定期备份的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                          配置 rsync 源服务器

简写 "rsync"

1. 关于  rsync

*一款增量备份工具 [ Remote Sync] 远程同步 ]   远程灾难备份工具\

*支持本地复制,或者其他SSH  Rsync 主机同步

  官方网站 : http://rsync.samba.org/

                                                               简    介

Rsyns  (Remote  Sync   远程同步) 是一个开源的快速备份工具 ,可以在不同主机之间镜像同步整个目录树 ,支持增量备份,保持链接和权限,且采用优化的同步算法, 传输前执行压缩, 因此非常适合用于异地备份, 镜像服务等应用


使用  " rpm -q  rsync " 查看rsync服务是否下载


实验环境:
1.server 同步源 192.168.10.1
2.client发起端 192.168.10.2

实验思路
*建立rsyncd.conf配置文件、独立的账号文件
*启用rsync --daemon模式
*用户ly ,允许下行同步
*操作的目录为 /var/www/html/
配置文件rsyncd.conf
*需手动建立,语法类似于Samba配置
*认证配置auth users、secrets file,不加则为匿名


步骤一: 下载 HTTP 服务用于验证实验效果  (可下载其他服务  非必要)

1[root@localhost ~]#  yum -y  install  httpd// 下载http服务
2[root@localhost ~]#  systemctl start httpd//  开启httpd服务


步骤二: 建立 /etc/rsyncd.conf  配置文件

Rsync 服务的主配置文件  rsync.conf  位于  /etc 目录下, 下面以源目录: /var/www/html  

                                                                                          备  份  账  号 :cheng     为例

1[root@localhost ~]#  vim  /etc/rsyncd.conf// rsyncd 服务主配置文件
2         uid = nobody
3         gid = nobody
4         use chroot = yes// 禁锢在源目录
5         address = 192.168.10.1//  监听地址
6          port 873//  监听端口
7          log file = /var/log/rsyncd.log//  日志存放文件
8          pid file = /var/run/rsyncd.pid//  存放进程ID的文件位置
9          hosts allow = 192.168.10.0/24//  允许访问的客户机的地址
10[wwwroot]//  共享模块名     '可任意输入'
11         path = /var/www/html//  源目录的真实路径
12         comment = Document Root of www1.benet.com//  注释用于区分 可任意修改
13          read only = yes//  是否为只读
14          dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z//  同步时不在压缩的文件类型
15          auth users = cheng//  授权账户         
16          secrets file = /etc/user_list//  存放账户信息的数据文件     '可任意创建并存放'

基于安全性考虑, 对于 rsync 的同步源最好仅允许以只读方式进行同步

另外同步可以采用匿名的方式 只要将其中的 " auth  users  " 和 " secrets file " 配置记录去掉就可以了

设置 auth users 配置项时 多个授权账户需要用空格或都好分隔


步骤三:为备份账号创建数据文件

// 语法采用 " 用户名:密码 " 的记录格式

// 独立的账号数据, 不依赖系统账号

根据上一步的设置,创建账号数据文件,添加一行用户记录,以冒号分隔

用户名称为 " cheng "   密码为 " 123123 "

由于账号信息采用明文存放,所以需要调整文件权限,避免账号信息泄露

1[root@localhost ~]#  vim  /etc/user_list//  存放账号信息数据文件目录
2cheng:123123//  账户及密码   ' 无需建立同名系统用户'
3[root@localhost ~]#  chmod  600  /etc/user_list

//  修改权限


步骤四:启动 rsync 服务程序

上述操作完成后, 执行 " rsync  --daemon " 命令就可以启动 rsync 服务, 以独立监听服务的方式运行. 如果要关闭 rsync 服务,则可以采取 kill 进程的方式, 如   kill $( cat /var/run/人syncd.pid )

*netstat -anput                                                 可查看端口号 一般用于查看服务是否开启

*netstat -anput | grep  指定服务或端口            可查看指定的服务是否开启

* kill $(cat /var/run/rsyncd.pid)                          关闭 rsync 服务


                                                                                      使用 Rsync 备份工具

1.rsync命令的用法
*基本格式:rsync [选项] 原始位置 目标位置        

【具体参数参照下列】
2.常用选项:
-a:归档模式,递归并保留对象属性,等同于 -rlptgoD
-v:显示同步过程的详细(verbose)信息
-z:在传输文件时进行压缩(compress)
-H:保留硬连接文件
-A:保留ACL属性信息
--delete:删除目标位置有而原始位置没有的文件
--checksum:根据对象的校验和来决定是否跳过文件

【-rlptgoD】
-r:递归模式,包含目录及子目录中所有文件
-l:对于符号链接文件仍然复制为符号链接文件
-p:保留文件的权限标记
-t:保留文件的时间标记
-g:保留文件的属组标记(仅超级用户使用)
-o:保留文件的属主标记(仅超级用户使用)
-D:保留设备文件及其他特殊文件

虽然 rsync 服务命令有很多选项, 但最常用的选项组合是 " avz " 表示压缩和显示部分信息,并以归档模式传输


2) 配置源的表示方法

        当执行远程同步任务时, rsync 命令需要指定同步源服务器中的资源位置. rsync 同步源的资源表示方式为:   "用户名@主机地址::共享模块名"   or   "rsync://用户名@主机地址/共享模块名"  前者为两个冒号分割形式,后者为URL地址形式  例如, 执行以下操作可以访问 rsync 同步源 将指定的资源下载到本地 /root 目录下进行备份

1rsync -avz backuper@192.168.4.200::wwwroot /root
 
【用户名@主机地址::共享模块名】
rsync -avz rsync://backuper@192.168.4.200/wwwroot /root【rsync://用户名@主机地址/共享模块名】

示例

执行以下操作可以访问源服务器中的 ftpp 共享模块 并下载到本地的  /root  目录下

3) rsync 源的免交互处理 不需要输入密码

        实际生产环境中的备份工作通常是按计划重复执行的,例如 每天晚上 22:30 对服务器的网站目录做一次同步 定期任务可以交给 crond 服务完成

        为了在同步过程中不用输入密码 需要创建一个密码文件 保存 cheng 用户的密码 例如: /etc/server.pass (此目录路径可任意创建)  

当执行 rsync 同步时 使用选项 " --password-file=/etc/server.pass " 指定用户的密码文件.

1[root@localhost ~]#   vim /etc/server.pass//  创建密码文件
2123123// 输入用户密码
3[root@localhost ~]#   chmod 600 /etc/server.pass //  为防止密码泄露 修改密码权限
4[root@localhost ~]#    crontab -e//  创建周期性任务
530 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass rsync://cheng@192.168.10.1/ftpp /root
 
//  每天 22:30 执行任务
6[root@localhost ~]#   systemctl restart crond //  重启 crond 服务
7[root@localhost ~]#   systemctl enable crond//  设置开机自启动
8[root@localhost ~]#   crontab -l//  查看周期任务


                                                                      rsync + inotify 实时同步   

                                                     

使用 inotify 的原因: 将 inotify 机制与 rsync 工具相结合,便可以实现触发式备份 (实时同步) -----只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等待状态.这样就避免了按固定周期备份所存在的延迟性. 周期过密等问题.

                                                                                   实时同步与定期同步的优缺点


实时同步的优点定期同步的不足
一旦同步源出现变化,立即启动备份
    只要同步源无变化,则不执行备份
执行备份的时间固定,延迟明显、实时性差
   当同步源长期不变化时,密集的定期任务是不必要的

关于inotify【Linux内核的inotify机制】
   从版本2.6.13开始提供
   可以监控文件系统的变动情况,并作出通知响应
   辅助软件:inotify-tools


步骤一: 调整  inotify 内核参数

在 Linux 内核中, 默认的 inotify 机制提供了三个调控参数

/max_queued_events         //监控时间队列

/max_user_instances         // 最多监控实例数

/max_user_watches           //  每个实例最多监控文件数

 当要监控的目录 文件数量较多或变化比较频繁是,建议加大这3个参数的值

       可以直接修改  /etc/sysctl.conf  配置文件, 将管理队列设为 32768    实例数设为 1024   监控数设为  1048576  通常情况下,建议监控数所设的值大于监控目标的总文件数  (末尾添加)

1[root@localhost ~]#   vi /etc/sysctl.conf
2.........末尾添加//  省略部分信息
3fs.inotify.max_queued_events = 32768
4fs.inotify.max_user_instances = 1024
5fs.inotify.max_user_watches = 1048576
6[root@localhost ~]#   sysctl -p//  立即执行此文件配置


步骤二: 安装 inotify - tools

使用 inotify 机制还需要安装 inotify - tools 辅助工具   以便提供   inotifywait   inotifywatch    辅助工具程序,用来监控.汇总改动情况

  inotifywait:用于持续监控,实时输出结果
  inotifywatch:用于短期监控,任务完成后再出结果

1[root@localhost ~]#  tar zxf inotify-tools-3.14.tar.gz//  解压此软件包
2[root@localhost ~]#  cd inotify-tools-3.14//  进入 inotify 目录
3[root@localhost ~]#  ./configure //  配置
4  [root@localhost ~]#  make//  编译
5[root@localhost ~]#  make  install//  安装

//配置时如果检测到gcc错误,先安装:yum -y  install gcc-c++              yum  -y   install   open*


                                                                 使用 inotifywait

inotify 语法选项:

-m, 持续进行监控                                                      modify ---- 修改文件内容
-r,  递归监控所有子对象                                            create ---- 创建目录、文件
-q, 简化输出信息                                                       move   --- 移动、重命名
-e, 指定要监控哪些事件类型                                     delete  --- 删除          


  【在发起端运行命令,实时监控本地服务器目录,inotifywait命令就可以满足触发备份需要】

1[root@localhost ~]# inotifywait -mrq -e modify,create,move,delete /var/www/html实时监控本地 /var/www/html   目录变化



 

验证:再打开一个客户端--------进入/var/www/html目录---进行增删改操作----查看前一个客户端是否有触发

*此命令输入后卡住属于正常现象 


                                                                                           通过inotifywait触发rsync同步操作

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值