当前位置: 首页 > news >正文

企业网站改自适应阜阳做网站的商户

企业网站改自适应,阜阳做网站的商户,wap浏览器,高端网站的制作使用rsyncinotify简单实现文件实时双机双向同步 实现思路 使用inotify-tools的inotifywait工具监控文件变化#xff0c;触发后使用rsync做同步。加入系统服务项#xff0c;实现实时监听#xff0c;方便管理。 以下配置操作#xff0c;单向同步#xff0c;只需在单边部…使用rsyncinotify简单实现文件实时双机双向同步 实现思路 使用inotify-tools的inotifywait工具监控文件变化触发后使用rsync做同步。加入系统服务项实现实时监听方便管理。 以下配置操作单向同步只需在单边部署。双机双向需要在两台服务器分别执行。 依赖软件简介 rsync简介 Rsync‌是一款开源的文件同步和数据传输工具适用于文件同步、各种数据备份等场景。主要功能包括 ‌增量传输‌仅同步发生变化的文件或目录减少数据传输量和时间。‌安全性‌支持通过SSH等安全协议进行远程传输确保数据传输的安全性。‌跨平台支持‌可以在Linux和Windows之间进行数据同步。 rsync仅支持单向同步若需要双向同步需要在对端也同时部署。 类似的工具还有Unison和FreeFileSync等提供了更强大的功能和图形界面。 inotify-tools简介 ‌inotify-tools‌是由Red Hat开发的一款Linux文件系统监控工具具有高效、细粒度和异步的特点能够安全、高性能地监控用户空间文件。还能监控设备、网络、CPU等系统资源的变化‌。 依赖软件安装 sudo apt update sudo apt-get install rsync inotify-tools3.22.1.0-2 -y方案一 使用ssh方式传输文件 rsync使用ssh传输指定密码文件的方式不安全因此配合免密使用 ssh免密登录配置 设置允许root用户使用公钥登录。在文件删除同步到对端的场景中使用普通用户ssh容易出现没有权限删除对端文件问题因此使用root用户。默认不允许root用户直接ssh登录需要修改sshd_config配置。 1、设置允许root用户ssh公钥密码登录。用来密钥拷贝时做密码验证 ## 修改前先备份 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak# 修改配置修改配置项PermitRootLogin值 # 改为PermitRootLogin yes sudo vi /etc/ssh/sshd_config# 修改后重启sshd服务 sudo systemctl restart sshd2、生成密钥并拷贝到对端 ## 使用ed25519算法生成密钥指定私钥保存路径静默安装无交互使用空密码 ssh-keygen -t ed25519 -C your_emailexample.com -f /root/.ssh/id_ed25519 -q -N ## 指定公钥路径将公钥复制到对端服务器。有交互填对端服务器登录密码 ssh-copy-id -i /root/.ssh/id_ed25519.pub rootip3、修改root用户ssh登录策略。关闭密码验证改为仅使用公钥 # 修改配置修改配置项PermitRootLogin值 # 改为PermitRootLogin prohibit-password sudo vi /etc/ssh/sshd_config# 修改后重启sshd服务 sudo systemctl restart sshd创建文件同步脚本 注意目录访问权限 #!/bin/bash# 定义源目录和目标主机信息 SOURCE_DIR/path/to/source REMOTE_USERroot REMOTE_HOSTremote ip REMOTE_DIR/path/to/destination# 使用inotify-tools的inotifywait工具监控文件变化并触发同步 inotifywait -m -r -e modify,create,delete,move --format %w%f $SOURCE_DIR | while read FILE; doecho Change detected: $FILErsync -avz --progress --delete -e ssh -o StrictHostKeyCheckingno $SOURCE_DIR/ ${REMOTE_USER}${REMOTE_HOST}:${REMOTE_DIR}/ done创建系统服务项 创建systemd服务文件file-sync.service放置到/etc/systemd/system/ [Unit] DescriptionFile Sync Service[Service] # 默认关闭日志输出到syslog调试时可以注释以下配置并重新加载服务 StandardOutputnull StandardErrornull # 指定脚本路径注意授权可执行权限 ExecStart/path/file-sync.sh Restartalways[Install] WantedBymulti-user.target启用服务 sudo systemctl daemon-reload sudo systemctl enable file-sync.service sudo systemctl start file-sync.service常见问题 rsync更新文件时间戳失败 rsync: [generator] failed to set times on “xxx” Operation not permitted 可能是服务器时间不同步也可能是rsync配置的用户组问题不关注权限可以忽略 rsync更新文件用户组失败 rsync [generator] chgrp ‘xxx’ failed: Operation not permitted 可能是rsync配置的用户组问题不关注权限可以忽略 已删除文件同步到对端失败 rsync error: some files/attrs were not transferred (see previous errors) 当前ssh用户无权限删除对端文件建议改为root 方式二 使用rsync-daemon方式传输文件 rsync守护进程rsyncd提供了一个独立的rsync服务器允许远程客户端连接并执行文件同步操作。提供了单独的用户账号区别于操作系统的管理使用rsync://协议做传输。 配置rsync服务 创建/etc/rsyncd.conf文件 # 全局设置 uid root gid root use chroot yes log file /var/log/rsyncd.log pid file /var/run/rsyncd.pid # 锁文件位置用于解决冲突 lock file /var/run/rsync.lock# 模块设置。支持同步的文件路径可多个 # 自定义模块名称 [xxx-path] path /yourPath comment Path for xxx read only no # 当使用rsync rsync://xxx-userip/ 连接时展示支持的模块名称和注释 list yes # 定义用户名和操作系统用户无关是rsync自己的用户认证体系 auth users xxx-user # 指定用户名和密码保存文件对端校验用 secrets file /etc/rsyncd.secrets创建rsync认证文件 文件路径为rsyncd.conf里secrets file指定的包含用户名和密码每行一个用户格式为username:password 启用rsync服务 sudo systemctl start rsync sudo systemctl enable rsync创建文件同步脚本 注意目录访问权限 #!/bin/bashSOURCE_DIR/path/to/source REMOTE_USERroot REMOTE_HOSTremote ip REMOTE_DIR/path/to/destination# 设置变量 LOCAL_DIR/path/to/source # 用户名为rsyncd.conf文件里auth users定义的非操作系统 REMOTE_USERxxx-user REMOTE_HOSTremote ip # 填写rsyncd.conf文件里定义的模块名称会自动关联对应模块里path项路径 REMOTE_MODULExxx-path LOG_FILE/var/log/file_sync.log# 函数本地到远程同步 sync_local_to_remote() {echo [$(date)] Syncing from local to remote... $LOG_FILErsync -avz --delete --progress \--exclude .sync_lock \--filterprotect .sync_lock \$LOCAL_DIR/ rsync://$REMOTE_USER$REMOTE_HOST/$REMOTE_MODULE $LOG_FILE 21 }# 函数远程到本地同步 sync_remote_to_local() {echo [$(date)] Syncing from remote to local... $LOG_FILErsync -avz --delete --progress \--exclude .sync_lock \--filterprotect .sync_lock \rsync://$REMOTE_USER$REMOTE_HOST/$REMOTE_MODULE/ $LOCAL_DIR $LOG_FILE 21 }# 创建锁文件以防止重复同步 LOCKFILE$LOCAL_DIR/.sync_lockif [ -f $LOCKFILE ]; thenecho [$(date)] Sync is already running, exiting. $LOG_FILEexit 1 fitouch $LOCKFILE# 使用 inotifywait 监听文件系统事件 inotifywait -m -r -e modify,create,delete,move $LOCAL_DIR | while read -r dir action file; do# 确保不因为同步脚本本身触发额外的同步if [ ! -f $LOCKFILE ]; thenbreakfi# 忽略 .sync_lock 文件的变化if [[ $file .sync_lock ]]; thencontinuefi# 检测到变化后进行双向同步sync_local_to_remotesync_remote_to_local donerm $LOCKFILE创建系统服务项 配置参考上述ssh传输方式章节里的系统服务项创建 ssh传输和rsync-daemon方案的区别 ssh方式需要使用操作系统用户容易出现文件访问权限等问题。而rsync-daemon使用自有的用户体系做文件访问和操作控制更加方便。rsync-daemon需要额外使用rsync服务引入了新的变量服务挂掉会导致文件同步功能不可用。ssh方式传输是推送方式只需要处理本地文件的变化再同步到对端。rsync-daemon传输是拉取方式是在本地发起请求去拉取对端因此在双向同步场景每次同步需要做from/to和to/from两次操作。 冲突解决 冲突发生场景例如同一个文件在双端同时被修改需要合理使用rsync提供的参数或者利用文件锁机制等方式解决。
http://www.lakalapos1.cn/news/22553/

相关文章:

  • 帝国cms下载站模板网站建设特色
  • 天河微网站建设内蒙古建筑培训网
  • 网站因为备案关闭了 怎么办山东省春季高考网站建设试题
  • 网站的ip地址是什么外国网站服务器
  • 小新pro更改网站设置小程序外包
  • 网站的需求品牌网页设计图片
  • 青岛集团网站建设wordpress 手机插件
  • 做网站的公司怎么发展业务南昌品牌网站建设
  • vs简单的网站开发合肥seo服务
  • wordpress回收站wordpress音乐自动播放
  • 网站项目设计具体方案怎么填充网站内容
  • 官方网站想反应问题不弄应该怎么做注册一个网站需要多少钱
  • 手机上怎么上传网站吗成都设计公司logo
  • 网站双域名 登陆网站建设人员工作职责
  • php怎样做网站的注删页面郑州it培训机构
  • 做网站没资源瓷砖网站建设
  • 深圳金融投资网站建设企业招聘官网
  • 刚注册公司怎么做网站广西建设银行行号查询网站
  • 米粒网站建设吕梁购物网站开发设计
  • 福州网站设计培训wordpress 带用户中心
  • 商城建站系统thinkphp5网站开发
  • 网站改版做301是啥意思 换域名南京江宁网站制作
  • 专门做h5的网站wap网页制作工具
  • 做招聘网站需要人力资源许可重庆大渡口营销型网站建设公司哪家专业
  • 每一个网站都是响应式吗外贸公司怎么运作
  • php网站开发工程师任职要求旅游电子商务网站策划书
  • 2016网站备案app联盟推广平台
  • 网站登陆口提交网站江苏建设工程造价管理网站
  • 西直门网站建设wordpress iphone app
  • 台州路桥网站建设企业网站建设合作协议书