使用 bup 进行本地 redmine 备份(兼容 docker-compose)
此脚本使用 bup 将你基于 docker-compose 的 redmine 安装备份到本地 bup 文件夹,例如 /var/lib/bup/my-redmine.bup:
另请参见备份到 bup 远程服务器的变体:Redmine 备份到 bup 远程服务器
backup_redmine.sh
#!/bin/bash
# 从目录名自动确定名称
# /opt/my-redmine => $NAME=my-redmine => /var/lib/bup/my-redmine.bup
export NAME=$(basename $(pwd))
export BUP_DIR=/var/lib/bup/$NAME.bup
bup_directory() {
echo "BUPing $1"
bup -d $BUP_DIR index $1 && bup save -9 --strip-path $(pwd) -n $1 $1
}
# 初始化
bup -d $BUP_DIR init
# 保存 MariaDB
source .env && docker-compose exec -T mariadb mysqldump -uroot -p${MARIADB_ROOT_PASSWORD} --all-databases | bup -d $BUP_DIR split -n $NAME-mariadb.sql
# 保存目录
bup_directory redmine_data
bup_directory redmine_themes
# 备份自身
bup_directory backup.sh
bup_directory docker-compose.yml
# 可选:添加 par2 信息
# 这仅推荐用于不可靠存储上的备份或极关键备份
# 如果你已有位腐保护(如 BTRFS 定期清理),这可能过度。
# 取消注释此行以启用:
# bup fsck -g
# 可选:清理旧备份
bup -d $BUP_DIR prune-older --keep-all-for 1m --keep-dailies-for 6m --keep-monthlies-for forever -9 --unsafe它将备份:
- 使用
mysqldump从 redmine 内部的 MySQL 数据 redmine_data文件夹redmine_themes文件夹- 备份脚本
backup.sh本身 docker-compose.yml
将其放在docker-compose.yml 所在的同一文件夹中。
此脚本与我们之前的文章如何在 10 秒内创建 systemd 备份计时器和服务兼容
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow