贴切生产环境rsync远程同步

2024-02-13 18:50

本文主要是介绍贴切生产环境rsync远程同步,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

rsync同步常用命令

  • 如果你是一位运维工程师,你很可能会面对几十台、几百台甚至上千台服务器,除了批量操作外,环境同步、数据同步也是必不可少的技能。

  • 说到“同步”,不得不提的利器就是rsync,今天就来说说我从这个工具中看到的同步的艺术。

关于rsync

一款快速增量备份工具

  • Remote Sync , 远程同步
  • 支持本地复制,或者与其他SSH、rsync主机同步
  • 官方网站:http://rsync.samba.org

配置rsync源服务器

rsync同步源

指定备份操作的远程服务器,而称为备份源

在这里插入图片描述

基本思路

建立rsyncd.conf配置文件、独立的账户文件

  • 启动rysnc的 --daemon模式

应用示例

用户backuper,允许下行同步

  • 操作的目录为 /var/www/html

配置文件rsyncd.conf

徐守东建立,语法类似于Samba配置

  • 认证配置auth users、secrets file,不加则为匿名

rsync账号文件

采用“用户名:密码”的记录格式,每行一个哟用户记录

  • 独立的账户数据,不依赖与系统账号

启动rsync服务

通过 --daemon独自提供服务

使用rsync备份工具
rsync命令的用法

rsync 【选项】 原始位置 目标位置

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

配置源的俩种表示方法

格式1 : 用户名@主机地址::共享模块名

格式2 : rsync://用户名@主机地址/共享模块名

实操

首先分别在服务器和客户端的俩台虚拟机上安装rsync的软件包

服务器端

[root@localhost ~]# vi /etc/rsyncd.conf 进入配置文件

uid = nobody 程序型用户
gid = nobody
use chroot = yes 禁锢家目录
address = 20.0.0.33
port 873
log file = /var/log/rsyncd.log 日志文件
pid file = /var/run/rsyncd.pid 进程文件
hosts allow = 20.0.0.0/24 允许20网段访问

[wwwroot] 共享模块名
path = /var/www/html 设置apache的站点供给别人访问
comment = www.kgc.cn 这是一段描述信息,可以随便设置
read only =yes 设置只读模式
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 压缩模块
auth users = backuper 虚拟的用户名
secrets file = /etc/rsyncd_users.db 数据库文件

vi /etc/rsyncd_users.db 单独创建虚拟用户的密码

backuper:abc123 这是一种格式必须是账户号码加“:”然后在跟密码

然后给文件设置一个权限,只有文件的所有者才能看文件的内容,增加了文件的安全性

chmod 600 /etc/rsyncd_users.db

启动服务进程

rsync --daemon

然后查看状态

netstat -natp |grep rsync

在这里插入图片描述

服务起来之后我们还要下载httpd服务,因为要基于该协议,传输信息

[root@localhost ~]# yum -y install httpd

[root@localhost ~]# cd /var/www/html/

[root@localhost html]# echo “this is abc” > abc.txt 创建一个文件作为测试

登陆客服端服务器

[root@localhost ~]# rsync -avz backuper@20.0.0.33::wwwroot /opt

在这里插入图片描述
从中我们可以看出,我们在同步信息的时候需要输入密码进行交互,这样会比较的麻烦,那么我们可以进行免交互

首先我们在用户端的路径下创建一个单独的密码文件

[root@localhost ~]# vi /etc/server.pass

我们在客户端把之前同步到/opt目录下的文件给删除了

[root@localhost opt]# rm -rf abc.txt

[root@localhost opt]# ll 然后查看已经是空的了

在这里插入图片描述

[root@localhost opt]# rsync -avz --delete --password
file=/etc/server.pass backuper@20.0.0.33::wwwroot /opt

在这里插入图片描述

在哪一个终端做同步,就需要那个服务器做监控

  • 调整inotify内核参数

[root@localhost opt]# vi /etc/sysctl.conf

fs.inotify.max_queued_events = 16384 监控事例队列的大小
fs.inotify.max_user_instances = 1024 最多监控实力的数量
fs.inotify.max_user_watches = 1048576 每个实力最多监控文件数

那么要是想完成实时同步就需要rsync+inotify 来完成实时同步的操作

  • 安专inotify-tools 辅助工具
    ♦ inotifywait : 用于持续监控,实时输出结果
    ♦ inotifywatch : 用于短期监控,任务完成后再出结果

常用的可选项

  • -m 持续进行监控
  • -r 递归监控所有子对象
  • -q 简化输出信息
  • -e 指定要监控那些事件类型

先对文件过进行解压,解压之后切到扩展目录

[root@localhost ~]# cd inotify-tools-3.14
[root@localhost inotify-tools-3.14]# yum -y install gcc gcc -c++ 安装底层环境
这里是引用

在这里插入图片描述

[root@localhost inotify-tools-3.14]# ./configure 执行
[root@localhost inotify-tools-3.14]# make && make install

装好之后我们就可以对它开启监控了

[root@localhost ~]# vi /opt/inotify.sh

#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,move,attrib,delete /opt/wot/"
RSYNC_CMD="rsync -az --delete --password-file=/etc/server.password /opt/wot/ backuper@20.0.0.33::wwwroot/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE 读取输出的监控记录doif [ $(pgrep rsync | wc -l) -le 0 ] 如果rsync未在执行,则立即启动then$RSYNC_CMDfi
done

然后在服务器端修改配置文件
[root@localhost ~]# vi /etc/rsyncd.conf

在这里插入图片描述

[root@localhost ~]# netstat -anpt |grep rsync

在这里插入图片描述

[root@localhost ~]# kill -9 27257 干掉这个进程
[root@localhost ~]# netstat -anpt |grep rsync 在进行过滤就看不到该进程了

[root@localhost ~]# rsync --daemon 启动守护进程
failed to create pid file /var/run/rsyncd.pid: File exists

开启守护进程,但是提示/var/run/目录下还有一个rsyncd.pid的文件存在

[root@localhost ~]# cd /var/run/
[root@localhost run]# ls 确实发现里面还有一个进程文件

在这里插入图片描述
[root@localhost run]# cat rsyncd.pid 查看这个文件的进程显示的进程号就是之前过滤出来的进程号

在这里插入图片描述

[root@localhost run]# rm -rf rsyncd.pid 删除进程文件

[root@localhost run]# netstat -anpt |grep rsync

在这里插入图片描述
开始执行这个脚本
在这里插入图片描述
然后在客户端在开一个进程,然后在共享目录里面在创建一个文件

[root@localhost wot]# echo “this is abc” > test.txt

这时切换到服务器端就能看到信息

在这里插入图片描述
然后在客户端查看之前的创建的文件,发现已经同步成功了
在这里插入图片描述

这篇关于贴切生产环境rsync远程同步的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/706348

相关文章

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

高并发环境中保持幂等性

在高并发环境中保持幂等性是一项重要的挑战。幂等性指的是无论操作执行多少次,其效果都是相同的。确保操作的幂等性可以避免重复执行带来的副作用。以下是一些保持幂等性的常用方法: 唯一标识符: 请求唯一标识:在每次请求中引入唯一标识符(如 UUID 或者生成的唯一 ID),在处理请求时,系统可以检查这个标识符是否已经处理过,如果是,则忽略重复请求。幂等键(Idempotency Key):客户端在每次

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用