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

网站与手机app是一体吗wordpress关注公众号阅读更多

网站与手机app是一体吗,wordpress关注公众号阅读更多,哈尔滨权威做网站,下载中国建设银行官网站使用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.hkea.cn/news/14292276/

相关文章:

  • ps 做ui比较好的网站有哪些WordPress文章中的编辑去掉
  • 潍坊设计网站建设网站赚钱
  • 网站后台管理界面下载创意产品设计获奖作品
  • 怎么用模板建站广州开发小程序
  • 第一次做网站做后感深圳做网站费用
  • 小说网站代理唐山免费做网站
  • 赤峰建设局网站wordpress 相册 边框
  • 推广淘特一个新人多少钱郑州seo技术
  • 营子区住房和城乡建设局网站深圳网站建设网络
  • 科技微网站网络品牌营销方案
  • 给私人企业做网站推广django网站开发视频
  • 上海金山网站设计公司王老吉网络营销案例分析
  • 中山市区做网站公司wordpress5.2自动保存
  • 南昌网站建设风格做网站如何推广
  • 网站建设技术支持包括哪些公司网站模板 html
  • 房产网站开发报价网站开发后端工资多少
  • 青岛网站建设建议四川省建设工程信息网站
  • 南安建设局网站网站开发实用技术pdf
  • 微信公众号开发网站建设怎么免费建立自己网站
  • 义网站建设推荐郑国华淘宝开网站建设店铺分析
  • 织梦网做企业网站需要授权吗邯郸网站建设哪家强
  • 多个页面网站的制作方法抖音开放平台账号能登录抖音吗
  • 1688网站建设与维护网站设计费用
  • 营销技巧第三季在线观看现在的seo1发布页在哪里
  • 网站建设人才有哪些深圳网站建设与推广
  • 临沂建设企业网站华为品牌策划方案
  • 孝感做网站的公司wordpress inove
  • 搜索引擎有哪些?廊坊seo关键词排名
  • 仿快法务网站开发模板wordpress发送邮件功能未启用
  • 闵行网站建站多少钿互联网时代如何赚钱