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

centos服务器实时备份

 

目标

 

  1. /usr/local/src 目录在两台 CentOS 7 服务器之间双向实时同步
  2. 任何一台机器目录变化,都会自动同步到另一台
  3. 开机自动运行,断网重连后继续同步

过程

  1. 自动安装 unison + inotify-tools
  2. 自动配置免密 SSH
  3. 自动创建 unison 配置文件
  4. 自动创建实时监控脚本
  5. 自动注册 systemd 服务并启动

部署

deploy_sync.sh脚本,在两台服务器上分别运行(注意替换 REMOTE_IPREMOTE_SSH_PORTREMOTE_USER

#!/bin/bash
# 一键部署双向实时同步(CentOS 7)
# 目录: /usr/local/src# ========== 用户配置区 ==========
REMOTE_IP="192.168.1.2"      # 对方服务器IP
REMOTE_SSH_PORT="22"         # 对方服务器SSH端口
REMOTE_USER="root"           # 对方服务器用户名
SYNC_DIR="/usr/local/src"    # 要同步的目录
# ===============================# 安装依赖
echo "[1/6] 安装 unison 和 inotify-tools..."
yum install -y epel-release >/dev/null 2>&1
yum install -y unison inotify-tools >/dev/null 2>&1# 生成SSH密钥
echo "[2/6] 生成SSH密钥..."
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa >/dev/null 2>&1# 免密登录对方服务器
echo "[3/6] 配置免密登录到 $REMOTE_USER@$REMOTE_IP..."
ssh-keyscan -p $REMOTE_SSH_PORT -H $REMOTE_IP >> ~/.ssh/known_hosts 2>/dev/null
sshpass -p "" ssh-copy-id -p $REMOTE_SSH_PORT $REMOTE_USER@$REMOTE_IP >/dev/null 2>&1# 创建unison配置文件
echo "[4/6] 创建unison配置文件..."
mkdir -p ~/.unison
cat > ~/.unison/default.prf <<EOF
root = $SYNC_DIR
root = ssh://$REMOTE_USER@$REMOTE_IP:$REMOTE_SSH_PORT/$SYNC_DIRignore = Name *.swp
ignore = Name *.tmp
ignore = Name *~recurse = true
auto = true
batch = true
prefer = newer
EOF# 创建实时同步脚本
echo "[5/6] 创建实时同步脚本..."
cat > /usr/local/bin/unison-realtime.sh <<'EOF'
#!/bin/bash
while inotifywait -r -e modify,create,delete,move /usr/local/src >/dev/null 2>&1; dounison >/dev/null 2>&1
done
EOF
chmod +x /usr/local/bin/unison-realtime.sh# 创建systemd服务
echo "[6/6] 注册systemd服务并启动..."
cat > /etc/systemd/system/unison-realtime.service <<'EOF'
[Unit]
Description=Unison Realtime Sync
After=network.target[Service]
ExecStart=/usr/local/bin/unison-realtime.sh
Restart=always
User=root[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reload
systemctl enable unison-realtime >/dev/null 2>&1
systemctl restart unison-realtimeecho "部署完成!现在 /usr/local/src 目录将在两台服务器间双向实时同步。"
echo "查看状态: systemctl status unison-realtime"
echo "查看日志: journalctl -u unison-realtime -f"

脚本做了什么?

安装 unison 和 inotify-tools
生成 SSH 密钥并免密登录到对方服务器
创建 unison 双向同步配置
创建实时监控脚本(inotifywait 检测文件变化 → 调用 unison 同步)
注册 systemd 服务,开机自启并立即运行

注意事项

两台服务器都要运行这个脚本
第一次运行会全量同步 /usr/local/src 目录
unison 默认会以修改时间新的文件为准解决冲突
如果要同步大文件,建议在低峰期首次运行

  

http://www.hskmm.com/?act=detail&tid=27441

相关文章:

  • 666
  • P14150 不动鸣神,恒常乐土
  • python本地生成验证码图片
  • CentOS 7 一键安装 vsftpd 并创建可登录 FTP 用户 test - 教程
  • 【完结】-固态硬盘ssd
  • 破解工地防盗难题:如何利用国标GB28181视频平台EasyCVR实现视频监控统一管理?
  • autogen论文解读 - Sun
  • 高效仿真:功耗与散热攻略
  • Vue的nextTick函数作用
  • #6515. 「雅礼集训 2018 Day10」贪玩蓝月
  • 公告
  • 车企数据治理平台化实战:从数据孤岛到全链路治理的架构演进
  • 磁盘的管理
  • 完整教程:Java中的缓存机制与分布式缓存实现!
  • jsconfig.json-vscode或cursor ctrl点击@路径,快速到达
  • C# 弃元模式:从语法糖到性能利器的深度解析
  • 2025钣金加工厂家最新推荐榜:精密工艺与定制服务口碑之选
  • python查询数据信息,分析前了解表格结构
  • 减少磁盘延迟的方法
  • AutoCAD 2025 CAD 安装包中文永久免费免激活破解版下载 附图文安装教程
  • nmcli修改ip地址
  • 静态库与动态库:开发者必知的底层逻辑与实践技巧
  • 从C到pwn入门
  • 基于MATLAB的三轴航天器姿态控制的仿真
  • golang基础语法(四) 数组 - 教程
  • for循环s.length()-1,s为空时的一直执行循环的问题
  • 自适应工作负载的智能系统构建技术解析
  • aardio获取exe路径
  • 分布式系统学习(一):相关概念及理论
  • AI元人文构想的新启发:从自动驾驶困境到通用价值智能的构建——声明Ai研究