数据备份与迁移
数据备份
如何备份MT Photos的数据、文件?
MT Photos需要备份的数据、文件包含以下几类:
- 1、数据库文件,文件位置:/config/pgsql (Windows服务端为 %AppData%\mt-photos-server\pgsql 文件夹)
- 2、生成的缩略图等缓存文件,文件位置:/config/cache (Windows服务端为选择的缓存文件夹)
- 3、手机App、网页端端上传的照片,文件位置:/upload (Windows服务端为选择的照片备份文件夹)
- 4、通过目录映射导入的照片,位置文件:自定义
注意: 这些路径都是指在容器内的路径,对于在宿主机中所在的路径,请结合各自docker容器的目录映射关系来查找。
1、备份数据库
数据库内会保存用户、图库、文件夹、照片、相册、人脸识别、文本识别、CLIP识别、场景识别等数据;
因此建议在 【系统设置】 -> 数据库备份 中开启自动备份,这样可以在数据库文件损坏会出错时可以从备份文件中恢复;
另外也可以点击【生成数据库备份】,来生成数据库备份文件;
如果点击生成数据库备份出错,可以参考这里的命令来创建备份文件: 从数据库导出到文件中
系统内置的数据库备份仅支持内置数据库的镜像,nodb版本的镜像需要到外部数据库中使用下面的命令来生成备份文件;
备份数据库命令:
su postgres -c 'pg_dump -c -U postgres -d postgres > /var/lib/postgresql/data/mt_photos_db_dump_2025-05-08_09_32_38.sql'恢复数据库命令:
su postgres -c 'psql -U postgres -d postgres -f /var/lib/postgresql/data/mt_photos_db_dump_2025-05-08_09_32_38.sql'如果mt_photos_pg容器指定了运行时的用户,也就是
-u 1000:100这样的参数,在运行上面的命令时,需要去掉 su postgres -c ' ',直接运行 ' '内部包含的那些命令,比如:pg_dump -c -U postgres ... _xx.sql
1.1、如何从文件中恢复数据库
点击这里查看 从文件恢复到数据库中
1.2、恢复数据库后可能遇到的问题
1、恢复数据库后,照片的缩略图无法显示:
原因:
缩略图文件没有恢复, 缩略图在 /config/cache里(Windows服务端为软件中选择的缓存文件夹)
解决方法:
方法1:把旧的缩略图文件复制过来;
方法2:重新生成缩略图; 在系统维护工具执行这个任务:【缩略图】- 重新生成全部文件的缩略图(仅用于缩略图文件被删除的情况)
2、恢复数据库后,App打开照片后显示的图片不对
原因:
app在打开照片时,会优先显示对应的本地文件,当数据库恢复后,可能有部分照片信息对不上,从而导致app显示的本地文件错误;
解决方法:
需要在app中先关闭备份,然后选择 备份所有照片 ;
备份路径里:保持 备份目的地、目录风格、是否按拍摄时间重命名 这几项配置不变;
上传设置里:重名文件 选择跳过
最后 点击启用备份, 等待App对全部文件重新检查一遍,之前已经备份过的照片在检查时会自动跳过;
2、备份缓存文件
/config/cache文件夹中的缩略图等文件,可以直接备份整个文件夹;
也可以选择不备份,当文件丢失后,可以通过系统维护工具中的【修复无法显示的缩略图】来重新生成缩略图。
3、备份上传的照片
/upload文件夹,可以直接备份整个文件夹;
4、目录映射导入的照片
备份照片所在的文件夹
数据迁移
当需要将MT Photos服务端从一个系统迁移到另外的系统中,根据服务端运行的平台可以分以下几种情况;
- 1、从docker版本服务端迁移到docker版本服务端 点击跳转
- 2、从docker版本服务端迁移到Windows版本服务端 点击跳转
- 3、从Windows版本服务端迁移到docker版本服务端 点击跳转
- 4、从Windows版本服务端迁移到Windows版本服务端 点击跳转
以上4种情况,都需要的操作
1、将新旧2个平台的服务端都升级到最新版本,避免因为版本不一致导致的数据冲突;
2、备份数据库: 在网页中,打开旧的服务端的系统设置,在数据库备份中点击 【生成新备份】 来生成数据库备份文件;
3、复制存放照片的文件夹: 复制全部图库的文件夹到新的系统中;
4、在迁移完成后,到系统设置底部,绑定下激活码,将订阅转到新的服务端中;
如果忘记激活码,可以在绑定激活码弹窗左下角点击 【生成激活码】 来找回激活码;
1、从docker版本服务端迁移到docker版本服务端
docker版本服务端之间迁移比较简单,将映射给容器的那些文件夹全部都复制到新的系统中;
然后再将文件夹映射到容器内,需要注意的是,映射到容器内的路径要和之前的保持一致;
在新系统中创建并启动容器后,再到系统设置底部,绑定下激活码,将订阅转到新的服务端中;
2、从docker版本服务端迁移到Windows版本服务端
2.1、先安装好Windows服务端并启动,在启动后,选择 照片备份文件夹 和 缓存文件夹;
照片备份文件夹对应的是 docker容器的 /upload文件夹
缓存文件夹对应的是 docker容器的 /config/cache文件夹
2.2、复制docker容器的/upload 文件夹,到前面选择的 照片备份文件夹 中;
2.3、复制docker容器的/config/cache文件夹,到前面选择的 缓存文件夹 中;
2.4、复制除/config 和/upload 之外的文件夹 到 Windows中的文件夹中(如果没有,这一步跳过);
2.5、打开MT Photos服务端软件,点击导入数据库文件,选择照片备份文件夹 中的数据库备份文件;
由于 docker版本服务端 与 Windows版本服务端 在文件系统的路径格式方面存在差异,因此在导入数据后需要到图库管理中修改文件夹的路径;
3、从Windows版本服务端迁移到docker版本服务端
2.1、复制 照片备份文件夹 到nas的文件夹中,这个文件夹后面在创建mt-photos容器时,映射到/upload 文件夹中;
2.2、在系统自动创建的docker文件夹中创建mt-photos文件夹 (这个文件夹后面需要映射为容器的/config 目录,在默认的docker文件夹中,可以避免因为文件夹权限导致的运行问题),进入mt-photos文件夹再创建cache文件夹;
并将Windows服务端的 缓存文件夹 中全部文件复制到 cache文件夹中;
复制完成后,cache文件夹下应该有这些文件:
2.3、复制其他图库添加的文件夹 到nas中(如果没有,这一步跳过);
2.4、创建mt-photos容器时,在目录映射部分,添加上面复制的文件夹;
2.5、创建并启动容器后,打开mt-photos容器的终端,按链接的教程导入数据库备份: https://mtmt.tech/docs/advanced/practice/#dbRestore
由于 docker版本服务端 与 Windows版本服务端 在文件系统的路径格式方面存在差异,因此在导入数据后需要到图库管理中修改文件夹的路径;
4、从Windows版本服务端迁移到Windows版本服务端
2.1、先安装好Windows服务端并启动,在启动后,选择 照片备份文件夹 和 缓存文件夹;
2.2、复制旧系统的 照片备份文件夹 到新的系统中;
2.3、复制旧系统的 缓存文件夹 到新的系统中;
2.4、复制其他图库添加的文件夹 到新的系统中(如果没有,这一步跳过);
2.5、打开MT Photos服务端软件,点击导入数据库文件,选择照片备份文件夹 中的数据库备份文件;
如果图库的文件夹路径有变化,需要到图库管理中修改文件夹的路径;

