需求: Sync Folder from 192.168.18.1:/opt/bk --> 192.168.18.2:/opt/bk 192.168.18.1 的用户名密码 sea:123 192.168.18.2 的用户名密码 sea:456

 

# 安装sshpass
sudo apt-get install -y sshpass

# 修改同步脚本
sudo nano /opt/sync_script.sh

 

 

#!/bin/bash

# 同步脚本 - 从192.168.18.1同步到192.168.18.2
SOURCE_HOST="192.168.18.1"
SOURCE_USER="sea"
SOURCE_PASS="123"      # 源服务器密码
SOURCE_PATH="/opt/bk"
TARGET_HOST="192.168.18.2"
TARGET_USER="sea"
TARGET_PASS="456"      # 目标服务器密码(用于反向检查)
TARGET_PATH="/opt/bk"

# 日志文件
LOG_FILE="/var/log/sync_bk.log"

echo "========================================" >> "$LOG_FILE"
echo "同步开始于: $(date)" >> "$LOG_FILE"

# 使用sshpass传递密码进行rsync同步
sshpass -p "$SOURCE_PASS" rsync -avz \
    --progress \
    --delete \
    --exclude='*.tmp' \
    --exclude='*.log' \
    --exclude='.git/' \
    -e "ssh -o StrictHostKeyChecking=no" \
    "$SOURCE_USER@$SOURCE_HOST:$SOURCE_PATH/" "$TARGET_PATH/" >> "$LOG_FILE" 2>&1

# 检查同步结果
if [ $? -eq 0 ]; then
    echo "同步成功完成于: $(date)" >> "$LOG_FILE"
    echo "同步状态: SUCCESS" >> "$LOG_FILE"
else
    echo "同步失败于: $(date)" >> "$LOG_FILE"
    echo "同步状态: FAILED" >> "$LOG_FILE"
fi

echo "========================================" >> "$LOG_FILE"

 

 

 

定时任务:

# 编辑当前用户的crontab
crontab -e

 

# 每5分钟同步一次
*/5 * * * * /opt/sync_script.sh

# 或者每30分钟同步一次
# */30 * * * * /opt/sync_script.sh

# 或者每天凌晨2点同步一次
# 0 2 * * * /opt/sync_script.sh

 

# 每4小时执行一次同步脚本

0 */4 * * * /opt/sync_with_pass.sh >> /var/log/cron_sync.log 2>&1

保存了crontab之后,我们还需要重启cron来应用这个计划任务。使用以下命令:

sudo service cron restart

crontab -l   命令列出它的全部信息

posted on 2025-12-29 17:44  lshan  阅读(2)  评论(0)    收藏  举报