备份QNAP威联通QuMagie相册人脸数据&人像识别数据
2022年1月13日 15:11
阅读 6533
0
前记 前段时间因为其中一个硬盘出现故障,将其他硬盘进行了换位更改操作,进入相册后发现已经完成的人像识别没有了。之前有对QNAP的中心数据库Mysql进行过恢复相册数据操作,感觉只要有数据库在,不怕已识别的人物数据丢失,但是新的问题又来了,仅仅恢复了Mysql的数据,人物中心的人脸识别数据回来了,但是在人物列表里不显示人脸照片。
经过多次索引和重新进行人脸识别后,找到了同时备份人物数据
以及人脸识别照片
的操作。
首先了解下威联通智能AI引擎的工作背景:
- 从内容管理获取照片、视频
- 对其进行索引
- 生成略缩图
- 人脸识别、物品识别、相似照片识别
这几个后台工作是同时进行的,这些工作会在2个地方写入数据,一个是系统的Mysql数据库,一个是本地图片缓存目录。
- Mysql数据库中记录了照片的路径、属性、标签、人像采集、略缩图位置等信息。
- 本地图片缓存目录有2个位置记录数据,在系统磁盘(默认是第一块磁盘)也是QuMagie的安装磁盘,记录人脸识别后的图片以及略缩图。
/share/CACHEDEV1_DATA/.system/facedata/ #已识别的人脸图片 /share/CACHEDEV1_DATA/.system/thumbnail/ #索引以及略缩图
如果要完整备份相册的数据,包括人像识别、照片标签等,需要同时备份这3处,等到恢复相册数据的时候才会完整,不会导致数据回来但是人脸照片不显示的问题:
以我的为例,40000个照片+视频大约300GB容量
- 备份照片的Mysql数据库 (备份数据大概150MB,压缩后40MB)
- 备份已识别的人像照片(备份数据大概350MB)
- 备份照片的略缩图目录(备份数据大概11GB,入口在Multimedia Console进入略缩图生成看到的是这个数据)
什么情况下会导致照片人像数据丢失?
- Multimedia Console,进入内容管理选项,对QuMagie和Photo Station同时取消勾选相册目录
- Multimedia Console,进入索引选项,进行重新建立索引动作
- Multimedia Console,进入AI引擎选项,进行人脸识别重新开始动作
- 更换硬盘,导致Multimedia Console内容管理已标记的照片文件夹丢失
- 对相册文件夹进行 非常规 重命名、添加、删除、移动照片或目录的操作
在SMB挂载、威联通文件总管、相册管理App里对照片文件夹的操作都属于正常操作,非正常的操作例如用Winscp、SSH或第三方文件管理器对照片和文件夹进行移动、添加、删除等,不会唤醒照片处理程序,导致图片不在,略缩图还在却打不开的问题。
如何完整恢复人脸识别数据?
- 保持原来照片存放目录的共享名一致,例如相册存放目录名字为Photo,存在路径就是/share/Photo,不管这个目录是哪个磁盘都不重要。
- 恢复Mysql数据库
- 恢复人脸图片和略缩图目录数据
备份
备份MySQL数据库
/usr/local/mariadb/bin/mysqldump --defaults-file=/usr/local/mariadb/my-mariadb.cnf -u root -pqnapqnap s01 > /share/备份/backup_s01_$(date +%Y-%m-%d-%H-%M-%S).sql
增量备份人脸识别数据&略缩图数据
rsync -azv /share/CACHEDEV1_DATA/.system/facedata/ /share/备份/facedata/
rsync -azv /share/CACHEDEV1_DATA/.system/thumbnail/ /share/备份/thumbnail/
恢复
先建立原来的相册目录,将照片文件导入后,再进行下面操作
恢复人脸识别数据,一定要先删除/share/CACHEDEV1_DATA/.system/里面的facedata和thumbnail文件夹内容,再恢复
rsync -azv /share/备份/facedata/ /share/CACHEDEV1_DATA/.system/facedata/
rsync -azv /share/备份/thumbnail/ /share/CACHEDEV1_DATA/.system/thumbnail/
恢复数据库MySQL备份
/usr/local/mariadb/bin/mysql --defaults-file=/usr/local/mariadb/my-mariadb.cnf -u root -pqnapqnap s01 < /share/备份/backup_s01.sql
注意
恢复操作具有一定的风险,由此产生的数据丢失需要自己承担。
另外恢复时,建议停用QuMagie和Photo Station服务,防止略缩图还未恢复完成,系统因为检测到没有略缩图,再次生成。再次生成的略缩图会跟恢复的数据库记录不匹配,导致出现不可预知的问题。
贴一段我自己用的备份脚本,加载到自己写的gocron任务管理器里,每隔3天自动备份一次并压缩,保留30个MySQL备份记录。
#!/bin/sh
#保存备份个数
number=30
#备份保存路径
backup_dir=/share/Backup/照片备份/face_info
#备份时间
dd=$(date +%Y-%m-%d-%H-%M-%S)
#备份MySQL数据库
/usr/local/mariadb/bin/mysqldump --defaults-file=/usr/local/mariadb/my-mariadb.cnf -u root -pqnapqnap s01 | gzip > $backup_dir/$dd_face_info_backup_$database_name.sql.gz
#写创建备份日志
echo "创建文件 $backup_dir/$dd-face_info_backup_$database_name.sql.gz" | tee -a $backup_dir/log.txt
#找出需要删除的备份
delfile=`ls -l -crt $backup_dir/*.gz | awk '{print $9 }' | head -1`
#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.gz | awk '{print $9 }' | wc -l`
if [ $count -gt $number ]
then
rm $delfile //删除最早生成的备份,只保留number数量的备份
#写删除文件日志
echo "删除文件 $delfile" | tee -a $backup_dir/log.txt
fi
echo ''
echo "备份人脸数据"
rsync -azv /share/CACHEDEV1_DATA/.system/facedata/ $backup_dir/facedata/
echo ''
echo "备份相册略缩图"
rsync -azv /share/CACHEDEV1_DATA/.system/thumbnail/ $backup_dir/thumbnail/