Linux高级管理——rsync远程同步

news2025/1/16 16:59:21

一、配置rsync源服务器:

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

[root@localhost ~]# rpm -q rsync  ##查看rsync版本

 在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中.同步源负责提供文档的原始位置.发起端应对该位置具有读取权限.如图12.1所示。

1.1 rsync同步源: 

rsync 作为同步源时以守护进程运行.为其他客户机提供备份源。配置rsync同步源需要建立配置文件rsyncd ,.conf,创建备份账号,然后将rsync程序以守护进程("--daemon”选项)方式运行。

(1)建立/etc/rsyncd ,conf 配置文件
配置文件rsyncd . conf位于/etc目录下。下面将以源目录/var/www /html、备份账号backuper为例.介绍其配置方法。

[root@localhost ~]# vim /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes

address=192.168.10.66
port=873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.10.0/24
[wwwroot]
  path = /var/www/html
  comment = Document Root of www1.bdqn.com
  read only = yes
  dont compress   = *.gz *.bz2 *.tgz *.zip *.rar *.z
  auth users = backuper
  secrets file = /etc/rsyncd_users.db


基于安全性考虑,对于rsync的同步源最好仅允许以只读方式做同步、另外.同步可以采用匿名的方式.只要将其中的“auth users”和“secrets file”配置记录去掉就可以了.
(2)为备份账户创建数据文件.
根据上一步的设置,创建账号数据文件,添加一行用户记录.以冒号分隔.用户名称为“backuper " .,密码为“pwd123”。由于账号信息采用明文存放,因此应调整文件权限.避免账号信息泄露.

[root@localhost ~]# vim /etc/rsyncd_users.db
backuper:pwd123
[root@localhost ~]# chmod 600 /etc/rsyncd_users.db 

备份用户backuper需要对源目录/var /www /html有相应的读取权限,实际上只要other组有读取权限,则备份用户backuper和运行用户nobody 也就有读取权限了。

##得先安装httpd服务

[root@localhost ~]# ls -ld /var/www/html
drwxr-xr-x. 2 root root 6 5月  30 2023 /var/www/html

(3)启动rsync服务程序.运行参数为“--daemon" 。
上述操作完成以后.执行“rsync —-daemon”命令就可以启动rsync服务.以独立监听服务的方式运行。若要关闭rsyn服务.可以采取kil进程的方式,如 kill s(cat /var /run/rsyncd .pid)。

[root@localhost ~]# rsync --daemon   ##启动服务
[root@localhost ~]# netstat -anpt | grep rsync
tcp        0      0 192.168.10.66:873       0.0.0.0:*               LISTEN      15835/rsync    

二、使用rsync备份工具:

2.1 rsync命令的基本用法
绝大多数的备份程序要求指定原始位置.目标位置,rsync命令也一样。最简单的rsync用法类似于cp命令。例如,可以将文件/etc/fstab、目录/boot /grub同步备份到/opt目录下,其中,“一r选项表示递归整个目录树."-[~选项用来备份链接文件.

[root@localhost ~]# rsync /etc/fstab /opt
[root@localhost ~]# rsync -rl /etc/fstab /boot/grub /opt

命令格式及常用备份选项
从以上操作可以看出.备份的基本格式为“rsync[选项]原始位置目标位置",其中常用的一些命令选项如下所示,具体应根据实际需求选择

-r:递归模式,包含目录及子目录中的所有文件.
-l:对于符号链接文件仍然复制为符号链接文件。
-v:显示同步过程的详细(verbose)信息。
-a:归档模式,保留文件的权限,属性等信息,等同于组合选项“-rlptgoD"。
-z:在传输文件时进行压缩(compress)。
-p:保留文件的权限标记。
-t:保留文件的时间标记。
-g:保留文件的属组标记(仅超级用户使用)。
-o:保留文件的属主标记(仅超级用户使用)。
-H:保留硬连接文件。
-A:保留ACL 属性信息。
-D:保留设备文件及其他特殊文件。
-- delete:删除目标位置有而原始位置没有的文件。
-- checksum:根据校验和(而不是文件大小,修改时间)来决定是否跳过文件,

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

[root@xiao ~]# rsync -avz backuper@192.168.10.10::wwwroot /root/
或
[root@xiao ~]# rsync -avz rsync://backuper@192.168.10.66/wwwroot /root

2. rsync备份操作示例
执行以下操作将访问源服务器中的 wwwroot共享模块.并下载到本地的/myweb目录下, 

[root@xiao ~]# mkdir /myweb
[root@xiao ~]# rsync -avzH --delete backuper@192.168.10.66::wwwroot /myweb

 实际生产环境中的备份工作通常是按计划重复执行的。例如,每天晚上22∶30对服务器的网站目录做一次同步.定期任务可以交给crond服务来完成。
为了在同步过程中不用输入密码.需要创建一个密码文件,保存 backuper用户的密码.如/etc/server . pass。在执行rsync同步时使用选项“—-password-file=/etc/server ,pass”指定即可。

[root@checker ~]# vim /etc/server.pass
[root@checker ~]# chmod 600 /etc/server.pass 
[root@checker ~]# crontab -e
30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass backuper@192.168.223.128::wwwroot /myweb     //每天22:30执行脚本
[root@checker ~]# systemctl restart crond
[root@checker ~]# systemctl enable crond

三、配置inotify+rsync实时同步:

 Linux内核从2.6.13版本开始提供了inotify 通知接口,用来监控文件系统的各种变化情况,如文件存取.删除、移动、修改等,利用这一机制.可以非常方便地实现文件异动告警.增量备份.并针对目录或文件的变化及时作出响应。
将inotify 机制与rsync工具相结合,可以实现触发式备份(实时同步)—一只要原始位置的文档发生变化.则立即启动增量备份操作.否则处于静默等待状态。

1.调整inotify内核参数
在Linux内核中.默认的inotify机制提供了三个调控参数:max_queue_events , max_user_instances、max_user_watches,分别表示监控事件队列(16 384)、最多监控实例数(128)、每个实例最多监控文件数(8192)

[root@localhost ~]# cat /proc/sys/fs/inotify/max_queued_events 
16384
[root@localhost ~]# cat /proc/sys/fs/inotify/max_user_instances 
128
[root@localhost ~]# cat /proc/sys/fs/inotify/max_user_watches 
8192
[root@localhost ~]# 

当要监控的目录.文件数量较多或者变化较频繁时,建议加大这三个参数的值.例如,可直接修改/etc/sysctl ,conf配置文件.将管理队列设为32768,实例数设为1024.监控数设为1048576,通常情况下.监控数所设的值建议大于监控目标的总文件数。

[root@localhost ~]# vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

 

 2.安装inotify-tools
使用inotify机制还需要安装inotify一tools,以便提供inotifywait、inotifywatch辅助工具程序.用来监控.汇总改动情况, inotify--tools可从网站http ; / / inotify-tools , sourceforge ,net/下载.版本为3.14.

[root@localhost ~]# tar zxf inotify-tools-3.14.tar.gz 
[root@localhost ~]# cd inotify-tools-3.14/
[root@localhost inotify-tools-3.14]# ./configure
[root@localhost inotify-tools-3.14]# make
[root@localhost inotify-tools-3.14]# make install

 以监控网站目录/var/www/html为例.可以先执行“inotifywait”命令.然后在另---个终端向/var/www/html目录下添加文件、移动文件.跟踪屏幕输出结果。其中,选项“-e”用来指定要监控哪些事件,选项“-m”表示持续监控,选项“-r”表示递归整个目录.选项“-q”简化输出信息。

inotifywait可监控modify(修改).create(创建)、move(移动)、delete {删除). attrib(属性更改)等各种事件,一有变动立即输出结果;inotifywatch 可用来收集文件系统变动情况.并在运行结束后输出汇总的变化情况。关于这两个命令的详细用法可以参考其man手册页.配置触发备份任务时只要用到inotifywait就可以了。
 


 


 





 




 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1340608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT4.0(中文版)国内无限制免费版(附网址)

ChatGPT,由OpenAI开发的人工智能语言模型。它是你的数字对话伙伴,无论你有何问题或需要什么帮助,它都能提供有用的信息。 经过不断的研发和更新,ChatGPT的性能和功能得到了显著提升。现在,我们将重点介绍ChatGPT的两个…

Apache Commons Pool的对象池技术

第1章:引言 咱们今天来聊聊一个在Java开发中超级实用,但又经常被忽视的技术——对象池技术。可能你们已经听说过“对象池”这个名词,但对它的具体作用和重要性还有些模糊。别急,小黑带你们一步步深入了解。 想象一下&#xff0c…

《Linux系列》Linux磁盘MBR分区扩容

文章目录 Linux磁盘MBR分区扩容1.前言2.控制台磁盘扩容3.分区扩容3.1 fdisk3.2 lsblk3.3 扩容分区 4.扩容文件系统4.1 df4.2 扩容文件系统 Linux磁盘MBR分区扩容 1)参考阿里云扩容分区文档,整理MBR分区扩容 2)本文档适用于MBR分区(fdisk -lu查…

【CSAPP】探究BombLab奥秘:Phase_2的解密与实战

📋 前言 ​🌈个人主页:Sarapines Programmer🔥 系列专栏:《斯坦福大学之CSAPP》⏰诗赋清音:桃花灼灼春风暖,心随乐曲扬徐徐。 苦尽甘来梦未阑,岁月长河任舟游。 ​ 🎉欢迎…

Qt sender()函数

sender函数原型: QObject *sender() const; 如果在由信号激活的插槽中调用该函数,返回指向发送信号的对象的指针,否则返回0,该指针仅在从该对象的线程上下文调用此函数的槽执行期间有效。 主要代码如下: 其中运用了Q…

为什么设计制造行业需要数据加密?

设计制造行业是一个涉及多种技术、工艺、材料和产品的广泛领域,它对经济和社会的发展有着重要的影响。然而,随着数字化、智能化和网络化的发展,设计制造行业也面临着越来越多的数据安全风险,如数据泄露、数据篡改、数据窃取等。这…

sonarqube安装踩坑记录

如果用java1.8和mysql,则sonarqube版本不能超过7.8,看这里。 sonarqube7.8安装包地址: https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.8.zip 安装步骤: 1、下载sonarqube安装包 wget https://binari…

EduChat账号密码登录

内测申请:请邮件dan_yhstu.ecnu.edu.cn,以“EduChat内测申请单位”作为邮件标题,邮件内容中写明用途 先去申请个账号和密码,会有一两天延迟吧,挺快的。 拿到账号之后去官网,点一个 官网传送门 就出来用账号密码登录的…

C++ Qt开发:SqlTableModel映射组件应用

Qt 是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍SqlTableModule组件的常用方法及灵活运用。 …

Android 8.1 设置USB传输文件模式(MTP)

项目需求,需要在电脑端adb发送通知手机端接收指令,将USB的仅充电模式更改成传输文件(MTP)模式,便捷用户在我的电脑里操作内存文件,下面是我们的常见的修改方式 1、android12以下、android21以上是这种方式…

竞赛保研 基于大数据的时间序列股价预测分析与可视化 - lstm

文章目录 1 前言2 时间序列的由来2.1 四种模型的名称: 3 数据预览4 理论公式4.1 协方差4.2 相关系数4.3 scikit-learn计算相关性 5 金融数据的时序分析5.1 数据概况5.2 序列变化情况计算 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 &…

机器人中的数值优化之牛顿共轭梯度法

欢迎大家关注我的B站: 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 本文ppt来自深蓝学院《机器人中的数值优化》 如何解决Hessian矩阵非正定的情况 求解线性系统需要很精确么 引入截断的机制,如果Hessia…

TC3XX GTM时钟频率计算

一、CMU框图 二、TOM 固定时钟生成(FXU)子单元为TOM模块和MON模块生成预定义的不可配置时钟CMU_FXCLK[y](y:0…4)。CMU_FXCLK[y]信号是从全局时钟分频器产生的CMU_GCLK_EN信号中导出的。划分因子被定义为20、24、28、212和216 。 1、相关配置 1.1 GTM外围频率 1.2可配置…

经典目标检测YOLO系列(一)复现YOLOV1(2)反解边界框及后处理

经典目标检测YOLO系列(一)复现YOLOV1(2)反解边界框及后处理 在上个博客,我们提出了新的YOLOV1架构,这次我们解决前向推理过程中的两个问题。 经典目标检测YOLO系列(一)YOLOV1的复现(1)总体架构 1、边界框的计算 1.1 反解边界框公式的改变 1.1.1 原版…

使用pytorch搭建ResNeXt并基于迁移学习训练

冻结除最后全连接层以外的所有权重,只去单独训练它最后一层的的权重,这个方法,冻结了所有网络的权重。 for param in net.parameters():param.requires_grad False

Python武器库开发-武器库篇之Git创建远程仓库和建立SSH key 免密登陆(三十七)

武器库篇之Git创建远程仓库和建立SSH key 免密登陆(三十七) Git是一种版本控制系统,用于跟踪文件的更改和协调多人开发项目。它可以记录文件的历史更改,协助多人协作开发,并提供分支管理功能。Git是一个分布式系统,意味着每个人在…

Docker自建文件快递柜系统

Docker自建文件快递柜系统。 软件特色: 轻量简洁:FastapiSqlite3Vue2ElementUI 轻松上传:复制粘贴,拖拽选择 多种类型:文本,文件 防止爆破:错误次数限制 防止滥用:IP限制上传次数…

【CSAPP】探究BombLab奥秘:Phase_1的解密与实战

📋 前言 ​🌈个人主页:Sarapines Programmer🔥 系列专栏:《斯坦福大学之CSAPP》⏰诗赋清音:桃花灼灼春风暖,心随乐曲扬徐徐。 苦尽甘来梦未阑,岁月长河任舟游。 ​ 🎉欢迎…

【C++篇】讲解string容器及其操作

文章目录 🍔简述string容器⭐字符串拼接操作⭐查找和替换⭐字符串比较⭐插入和删除⭐获取字串 🍔简述string容器 在C STL中,string是一个字符串容器,它封装了字符串相关的操作,提供了很多方便的方法来处理字符串。 具…