ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

centos服务器实时备份

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 默认会以修改时间新的文件为准解决冲突
如果要同步大文件,建议在低峰期首次运行

  

返回列表