KolleK 内部没有自动备份功能。保护数据是运维者的职责,本页就是具体操作流程。就目前而言,这也是“如何导出所有数据”这个问题的真正答案,备份你的收藏数据 从收藏者的角度对此做了说明。
三样东西,缺一不可:
db-data
storage-data
.env
APP_KEY
APP_PREVIOUS_KEYS
没有对应应用密钥的备份根本算不上备份。没有当初写入数据时使用的密钥,加密字段恢复出来只是一堆无法读取的密文。请将密钥与你每一次的备份一起保存,或至少同步保存。参见 应用密钥与加密。
导出数据库:
docker compose exec mysql mysqldump -u root -p"$DB_ROOT_PASSWORD" "$DB_DATABASE" > kollek-backup.sql
打包存储卷:
docker run --rm -v kollek_storage-data:/data -v "$PWD":/backup alpine tar czf /backup/kollek-storage.tar.gz -C /data .
把这两个文件,连同一份 .env,复制到服务器之外的地方保存。建议用每晚运行的 cron 任务自动完成,并保留多个历史版本;一份从未验证过能否恢复的备份,只是一种侥幸,算不上真正的方案。
在一台全新的机器上,按以下顺序恢复:
docker compose exec -T mysql mysql -u root -p"$DB_ROOT_PASSWORD" "$DB_DATABASE" < kollek-backup.sql
docker run --rm -v kollek_storage-data:/data -v "$PWD":/backup alpine tar xzf /backup/kollek-storage.tar.gz -C /data
docker compose up -d
docker compose down -v 会删除具名数据卷,也就是数据库和所有上传的文件。切勿在生产实例上使用 -v 参数。不带该参数的 docker compose down 是安全的,不会影响数据卷。
docker compose down -v
-v
docker compose down
本页内容