因为家里服务器配置太老了,想装memos,就得买一台新的服务器,一年买一次,每年都要备份,迁移操作。把手动搬迁方法记录一下。
- 定位数据存储位置(两种情形):
1 2 3 4 5 6
| # 查看容器挂载信息(替换容器名) docker inspect memos | grep "Mounts" -A 20
# 若使用数据卷: docker volume ls docker volume inspect memos_data
|
- 手动备份方案:
1 2 3 4 5
| # 直接打包备份(推荐方式) docker exec memos sh -c 'tar czf - /var/opt/memos' > memos_backup_$(date +%Y%m%d).tar.gz
# 仅备份数据库文件(SQLite方案) docker cp memos:/var/opt/memos/memos_prod.db ./memos_db_$(date +%Y%m%d).db
|
- 自动备份脚本(保存为 backup_memos.sh):
1 2 3 4 5 6 7 8
| #!/bin/bash BACKUP_DIR=/path/to/backups CONTAINER_NAME=memos
docker exec $CONTAINER_NAME sqlite3 /var/opt/memos/memos_prod.db ".backup '/var/opt/memos/memos_backup.db'" docker cp $CONTAINER_NAME:/var/opt/memos/memos_backup.db $BACKUP_DIR/memos_$(date +%Y-%m-%d).db gzip $BACKUP_DIR/memos_$(date +%Y-%m-%d).db find $BACKUP_DIR -name "*.db.gz" -mtime +7 -delete
|
- Docker Compose用户专用方案:
1 2 3 4 5 6
| version: '3.8' services: memos: image: neosmemo/memos:latest volumes: - ./memos_data:/var/opt/memos # 绑定宿主目录
|
备份命令:
tar czvf memos_backup.tar.gz ./memos_data
5. 恢复数据指南:
1 2 3 4 5 6 7 8 9 10 11 12
| # 停止容器 docker stop memos
# 全量恢复 docker cp memos_backup.tar.gz memos:/tmp/ docker exec memos tar xzvf /tmp/memos_backup.tar.gz -C /
# 或单文件恢复 docker cp ./memos_prod.db memos:/var/opt/memos/memos_prod.db
# 重启容器 docker start memos
|