跳到主要内容

备份

创建 Cloudflare R2 存储桶

创建一个名为 assets 的存储桶,配置公开访问链接为 https://assets.viva-la-vita.org。获取它的 API Key ID 和 Secret Key。

安装与配置 AWS CLI

首先安装 AWS CLI,然后用 configure 输入 Cloudflare R2 的信息:

apt install awscli
aws configure

创建备份脚本

##!/bin/bash
mkdir -p /root/backup
cd /root/backup
## cms: mysql
docker exec cms-mysql-1 sh -c 'exec mysqldump strapi -uroot -p"$MYSQL_ROOT_PASSWORD"' | gzip > cms-`date +%F`.sql.gz
## bbs: mysql
docker exec bbs-mysql-1 sh -c 'exec mysqldump flarum -uroot -p"$MYSQL_ROOT_PASSWORD"' | gzip > bbs-`date +%F`.sql.gz
## bbs: assets
docker run --rm --volumes-from bbs-flarum-1 -v `pwd`:/backup ubuntu tar czPf /backup/bbs-`date +%F`.tar.gz /var/www/flarum
find . -type f -mtime +2 -exec rm -rf {} \; 2>&1
aws --endpoint-url https://<account-id>.r2.cloudflarestorage.com s3 sync . s3://assets/backup --delete

设置 cron job

以 root 用户运行 crontab -e,然后输入

0 4 * * * /root/backup.sh

注:如果更改过时区,需要做 service cron restart 才能让 cron 获取正确的时区。

从备份中恢复

静态文件可以在容器外执行此命令直接导入:

docker run --rm --volumes-from bbs-flarum-1 -v `pwd`:/backup ubuntu tar xzPf /backup/bbs-YYYY-MM-DD.tar.gz

数据库要略复杂一些,需要先解压缩 gzip -d bbs-YYYY-MM-DD.sql.gz,然后将它复制进容器 docker cp bbs-YYYY-MM-DD.sql bbs-mysql-1:/root/。最后,进入容器并执行命令:

mysql -u root -p flarum < /root/bbs-YYYY-MM-DD.sql