所在位置: 首页 教程 备份QNAP威联通QuMagie相册人脸数据&人像识别数据

备份QNAP威联通QuMagie相册人脸数据&人像识别数据

5个月前
阅读 604
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/
    作者
    用户1459886260448399360
    暂无签名...
  • 文章 --
  • 阅读量 --
  • 获赞 --
  • 排名 --
    标签