使用 Restic 为 Weblate 与 PostgreSQL 创建备份
注:相关文章:
- 如何在 Synology NAS 上安装 Restic REST 服务器 介绍服务器端配置(你也可以使用其他后端)
- 我们基于
docker-compose的 Weblate 部署方案:使用 docker-compose 与 Traefik 在 10 分钟内部署 Weblate
配置备份脚本
首先,使用以下命令生成加密密码:
backup.sh
pwgen 30 > .restic_password请务必单独备份此密码,否则所有数据都将丢失!
然后在 docker-compose.yml 所在目录下创建 backup.sh:
weblate_backup.sh
#!/bin/bash
export NAME=$(basename $(pwd))
export RESTIC_REPOSITORY=rest:http://restic:[email protected]: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
# 备份数据库
source .env
docker-compose exec -T database pg_dump -U${POSTGRES_USER} ${POSTGRES_DB} | restic --verbose backup --stdin --stdin-filename="${NAME}.sql"
# 备份文件
restic --verbose backup backup.sh docker-compose.yml weblate_data --exclude weblate_data/backups --exclude '**/__pycache__'自动启动备份脚本
参见 如何在 10 秒内创建 Systemd 备份定时器与服务
TL;DR: 在 backup.sh 所在目录下运行:
create_backup_service.sh
wget -qO- https://techoverflow.net/scripts/create-backup-service.sh | sudo bash /dev/stdinIf this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow