FetchLinux 自动化任务实用指南
一 适用场景与总体思路
二 远程同步与备份的自动化
#!/usr/bin/env bash
set -Eeuo pipefail
REMOTE="user@192.0.2.10"
SRC="/data/logs"
DEST="/opt/backup/logs_$(date +%F)"
LOG="/var/log/fetchlinux/sync_$(date +%F).log"
KEY="/home/fetchlinux/.ssh/id_rsa"
RETAIN_DAYS=7
mkdir -p "$(dirname "$LOG")" "$DEST"
echo "[$(date)] Start sync from $REMOTE:$SRC to $DEST" >> "$LOG"
# 拉取
if fetchlinux -i "$KEY" -p 22 "$REMOTE:$SRC" "$DEST" -r >> "$LOG" 2>&1; then
echo "[$(date)] Fetch OK" >> "$LOG"
else
echo "[$(date)] Fetch FAILED" >> "$LOG"
# 可接入企业微信/钉钉/邮件告警
exit 1
fi
# 可选:校验示例(若远端提供 .sha256)
# fetchlinux -i "$KEY" "$REMOTE:$SRC/SHA256SUMS" /tmp/SHA256SUMS
# (cd "$DEST" && sha256sum -c /tmp/SHA256SUMS) >> "$LOG" 2>&1 || {
# echo "[$(date)] Checksum FAILED" >> "$LOG"; exit 1; }
# 清理旧备份
find "$(dirname "$DEST")" -maxdepth 1 -type d -mtime +$RETAIN_DAYS -delete >> "$LOG" 2>&1
echo "[$(date)] Done" >> "$LOG"
# 每天 02:00 执行
0 2 * * * /opt/fetchlinux/scripts/sync_data.sh
三 镜像下载与校验的自动化
四 系统级自动化与服务编排
sudo systemctl enable fetchlinux
sudo systemctl start fetchlinux