跳转到内容
Go back

Gitea 备份到 R2 脚本备份

更新于:

Gitea 备份到 R2 脚本备份

  1. rclone 不支持使用通配符命名
#!/bin/bash
set -Eeuo pipefail

# 错误捕获
trap 'echo "错误:退出状态 $? 在第 $LINENO 行,命令: $BASH_COMMAND"' ERR

BACKUP_DIR="/data/backup"
TIMESTAMP=$(date '+%Y%m%d-%H%M%S')
LOGFILE="$BACKUP_DIR/backup-${TIMESTAMP}.log"
GITEA_BIN="/usr/local/bin/gitea"
GITEA_CFG="/etc/gitea/app.ini"
BACKUP_FILE="$BACKUP_DIR/gitea-dump-${TIMESTAMP}.zip"

# 如果不是调试模式,则重定向日志
if [ "${DEBUG:-0}" -ne 1 ]; then
    exec > >(tee -a "$LOGFILE") 2>&1
fi

echo "==== $(date '+%Y-%m-%d %H:%M:%S') Backup started ===="

cd "$BACKUP_DIR"

# 删除 7 天前的旧备份
echo "Cleaning old backups..."
find "$BACKUP_DIR" -name "gitea-dump*.zip" -delete

# 执行 Gitea 备份
echo "Running gitea dump..."
if runuser -u git -- "$GITEA_BIN" dump --config "$GITEA_CFG" --file "$BACKUP_FILE"; then
    echo "Gitea backup completed successfully: $BACKUP_FILE"
else
    echo "Gitea backup failed"
    exit 1
fi

# 上传到对象存储
echo "Running rclone copy $BACKUP_FILE -> r2:giteabackup/"
if rclone copy -v --checksum "$BACKUP_FILE" r2:giteabackup/; then
    echo "Backup uploaded successfully"
    rm -v "$BACKUP_FILE"
else
    echo "Backup upload failed"
    exit 1
fi

echo "==== $(date '+%Y-%m-%d %H:%M:%S') Backup finished ===="

分享文章至:

Previous Post
蔡元培 - 救人(北大演说)
Next Post
BusyBox 删除空文件夹