基于 bup 的 InvenTree 备份脚本
注:我已将基于 bup 的备份替换为 restic。
安装方式参见 如何在 10 秒内创建 systemd 备份定时器与服务
将此文件放在 docker-compose.yml 所在目录下,并赋予可执行权限。
backup.sh
#!/bin/bash
export NAME=$(basename $(pwd))
export BUP_DIR=/var/bup/$NAME.bup
export REMOTE_BUP_DIR=/bup-backups/$NAME.bup
export REMOTE_SERVER=10.1.2.3
export BUP_REMOTE=$REMOTE_SERVER:$REMOTE_BUP_DIR
# 创建备份归档
docker-compose run inventree-server invoke backup
bup_directory() {
echo "正在 BUP 处理 $1"
bup -d $BUP_DIR index $1 && bup -d $BUP_DIR save -r $BUP_REMOTE -9 --strip-path $(pwd) -n $1 $1
}
# 初始化
#bup -d $BUP_DIR init -r $BUP_REMOTE
# 备份 PostgreSQL
#docker-compose exec -u gitlab-psql gitlab pg_dump -h /var/opt/gitlab/postgresql/ -d gitlabhq_production | bup -d $BUP_DIR split -r $BUP_REMOTE -n $NAME-pgdump.sql
# 备份目录
bup_directory config
bup_directory data
# 备份脚本自身
bup_directory backup.sh
bup_directory docker-compose.yml
# 可选:添加 par2 校验信息
# 仅在备份存储不可靠或备份极为关键时推荐使用
# 如果已有位腐保护(例如 BTRFS 定期校验),这可能有些多余。
# 取消注释以下行以启用:
# bup on $REMOTE_SERVER -d $REMOTE_BUP_DIR fsck -g
# 可选:清理旧备份
bup on $REMOTE_SERVER -d $REMOTE_BUP_DIR prune-older --keep-all-for 1m --keep-dailies-for 6m --keep-monthlies-for forever -9 --unsafeCheck out similar posts by category:
Backup
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow