如何使用 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让我们分解一下:
docker exec -it (容器 ID) (命令):在正在运行的 docker 容器上运行命令。docker container ls | grep redmine_mariadb_1 | cut -d' ' -f1:获取名为redmine_mariadb_1的正在运行的 docker 容器的 ID(输出的第一个字段cut -d' ' -f1)mysqldump -uroot bitnami_redmine:这在 docker 容器上运行并将 Redmine 数据库作为 SQL 转储到 stdout。不需要密码,因为 Bitnami MariaDB 镜像允许无密码访问。xz -e9 -zc -:从 stdin(-)获取 mysqldump 的数据,使用最大压缩设置(-e9 -z)压缩它并将压缩数据写入 stdout。> redmine-database-dump-$(date -I).sql.xz:将 xz 的压缩数据写入当前目录中名为redmine-database-dump-(当前日期).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
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow