如何使用 Bitnami Docker 镜像备份 Redmine

之前的文章中我详细介绍了如何使用优秀的 Bitnami docker 镜像在 Linux 上安装 Redmine。

本文将教你如何轻松地在线备份你的 Redmine 安装。注意自动化备份在本文范围内。

我们假设 redmine 如我之前的文章所示安装在 /var/lib/redmine 中,并且你想使用 rsync 备份到 my.backup.server:~/redmine-backup/

备份 Redmine 数据

这非常简单,因为数据全部在一个目录中。你可以使用以下命令同步

rsync-redmine-data.sh
rsync --checksum -Pavz /var/lib/redmine/redmine_data my.backup.server:~/redmine-backup/

注意 redmine_data 中文件的旧版本将被覆盖,但本地删除的文件不会在备份服务器上删除。对我来说,这似乎是恢复已删除文件的能力和使用的存储空间之间的良好折衷。

备份 Redmine 数据base

此部分稍微复杂一些,因为我们需要访问在不同容器中运行的 MariaDB 服务器。*重要提示:*容器 ID 可以更改,因此仅查找一次容器 ID 然后使用它是不够的。你需要在每次备份时确定适当的 ID。请参见下方的说明如何操作。

完整命令:

dump-redmine-db.sh
docker exec -it $(docker container ls | grep redmine_mariadb_1 | cut -d' ' -f1) mysqldump -uroot bitnami_redmine | xz -e9 -zc - > redmine-database-dump-$(date -I).sql.xz

让我们分解一下:

生成的文件名为例如 redmine-database-dump-2019-02-01.sql.xz,它放在当前目录中。确保你在合适的目录中运行命令。如果你不知道哪个目录可能合适,在 /tmp 中运行。

现在我们可以将其 rsync 到服务器:

rsync-db-backup.sh
rsync --checksum -Pavz redmine-backup-*.sql.xz my.backup.server:~/redmine-backup/

由于文件名包含当前日期,此方法不会覆盖旧的每日数据库备份,因此你可以非常灵活地恢复数据库。


Check out similar posts by category: Container, Docker, Linux, Project Management