#!/bin/bash
SOURCE="/nfs/data/"
TARGET="root@x.x.x.x:/nfs/data/"
E10BAKSOURCE="/nfs/e10bak/"
E10BAKTARGET="root@x.x.x.x:/nfs/e10bak/"
# 密碼(請勿修改權限)
PASSWORD="xxxxxx"
# 日誌文件
LOG="/opt/weaver/filebaksh/rsync.log"
LOCK="/opt/weaver/filebaksh/rsync.lock"
export SSHPASS="$PASSWORD"
# 檢查鎖文件是否存在,若存在則退出(已有進程在運行)
if [ -f "$LOCK" ]; then
echo "[$(date)] ERROR: Another rsync process is running. Lock file exists." >> "$LOG"
exit 1
fi
# 創建鎖文件
touch "$LOCK"
# 執行 rsync同步data
if /usr/bin/sshpass -e /usr/bin/rsync -avPS "$SOURCE" "$TARGET" >> "$LOG" 2>&1; then
echo "[$(date)] Sync completed successfully." >> "$LOG"
else
echo "[$(date)] ERROR: rsync failed." >> "$LOG"
exit 1
fi
# 執行 rsync同步e10bak
if /usr/bin/sshpass -e /usr/bin/rsync -avPS "$E10BAKSOURCE" "$E10BAKTARGET" >> "$LOG" 2>&1; then
echo "[$(date)] Sync completed successfully." >> "$LOG"
else
echo "[$(date)] ERROR: rsync failed." >> "$LOG"
exit 1
fi
# 刪除鎖文件
rm -f "$LOCK"
[root@E10198 filebaksh]#
cronte -e
#每天 午夜 00:00 執行
0 0 * * * /opt/scripts/rsync-sync.sh
# 每天晚上 11:30 清空 rsync 日誌
30 23 * * * : > /opt/weaver/filebaksh/rsync.log
定時任務寫在A主機上
腳本主要是每天同步 A主機的/nfs/data/ 目錄到 B主機的/nfs/data/目錄下