此脚本保存所有 gitea 数据,但跳过 actions_artifacts 和 actions_logs 目录,因为它们可以重新生成。你可以根据需要添加或删除排除项。
它基于使用 Traefik 和 PostgreSQL 的 Gitea docker-compose 配置,但可以轻松适配到其他设置。
gitea_restic_backup.sh
#!/bin/bash
export NAME=$(basename $(pwd))
export RESTIC_REPOSITORY=rest:http://restic:abc123abc@10.1.2.3:16383/$NAME
export RESTIC_PASSWORD_FILE=.restic_password
if [ ! -f "${RESTIC_PASSWORD_FILE}" ]; then
echo "请创建 .restic_password 并填入备份加密密码,并单独备份该密码!!!"
exit 1
fi
echo "正在初始化仓库,请忽略任何 'already exists' 错误"
if [ ! -f ".restic_inited" ]; then
# 运行 restic init 命令
restic init
if [ $? -eq 0 ]; then # 如果初始化成功
# 创建初始化文件
touch ".restic_inited"
echo "Restic 已初始化"
fi
fi
# 保存 Gitlab 内部的 PostgreSQL
docker-compose exec -u postgres postgres pg_dump -d gitea -U gitea | restic --verbose backup --stdin --stdin-filename="$NAME-pgdump.sql"
# 保存目录
restic --verbose backup gitea_config gitea_data backup.sh docker-compose.yml --exclude=gitea_data/actions_artifacts --exclude=gitea_data/actions_logs --exclude=gitea_data/tmp如果这篇文章对您有帮助,请考虑请我喝杯咖啡或通过 PayPal 捐款,以支持 TechOverflow 上新文章的研究与发布