当前位置: 代码迷 >> 综合 >> 如何修改macOS 照片应用的原图片的目录路径
  详细解决方案

如何修改macOS 照片应用的原图片的目录路径

热度:24   发布时间:2024-03-09 20:01:06.0

磁盘系统坏了,是因为使用了HFS+ FOR WINDOWS 在macos和windows两边进行读写修改之类的,结果悲剧了,整个 HFS+的分区都变了成可读,也无法使用“急救”来修复。

挂之前的现象的是写大文件会给截断,如8G的文件,copy过去,结果就变成了2G, 太坑了。。。

好在还能读,赶紧把最重要的图片放到另一个硬盘上。 

放完之后,打开“照片”应用,提交原文件不可用,无法打开云云,于是尝试使用sqite3修复一下.

 

1. 先把照片应用都退出

ps axe | grep -i photo | xargs kill -9 

2. 备份db

#先备份
cp -r /Volumes/evo/myphotos.photoslibrary/database /Volumes/evo/myphotos.photoslibrary/database.bak

3.  先修复ZGENERICASSET

 

#更新资源的路径
sqlite3 /Volumes/evo/myphotos.photoslibrary/database/Photos.sqlite "
update ZGENERICASSET set ZDIRECTORY=replace(ZDIRECTORY,\"/Volumes/st3t/pictures/\", \"/Volumes/nas2/pictures/\");"

4. 修复ZFILESYSTEMBOOKMARK, 这个主要内容是放在blob的字段里的ZBOOKMARKDATA, 这个比较麻烦,要先.dump出来用sed改一下,再导入db中。

#先导出来:
$ sqlite3 /Volumes/evo/myphotos.photoslibrary/database/Photos.sqlite ".dump" > bak.sql#计算要原目录的16进制字节码串
$ echo -n "st3t" | xxd -p | tr [:lower:] [:upper:]
73743374#计算目标目录的16进制字节码串$ echo -n "nas2" | xxd -p | tr [:lower:] [:upper:]
6E617332#替换
sed  -i "s/73743374/6E617332/g" bak.sql#恢复db
sqlite3 temp.sqlite ".read bak.sql"#替换
mv temp.sqlite /Volumes/evo/myphotos.photoslibrary/database/Photos.sqlite 

5. 删除临时文件, 不删除打开会报错。

rm Photos.sqlite-shm  Photos.sqlite-wal Photos.sqlite.lock

6. 删除无用的volume 记录 。 

sqlite3 /Volumes/evo/myphotos.photoslibrary/database/Photos.sqlite "delete from ZFILESYSTEMVOLUME"