如何解决使 ExifTool overwrite_original 是事务性和原子性的?
我正在使用 ExifTool 向文件添加关键字。我批量执行此操作,将 ExifTool 作为子进程从我的应用中生成。
exiftool -keywords+="courgettes" -keywords+="edible gardening" -keywords+="vegetables" -keywords+="Glasshouse" -keywords+="Greenhouse" -overwrite_original "/pictures/garden/P8151927.JPG"
然而,似乎 -overwrite_original
的过程不是 100% 事务性和原子性的;有时它会因某种原因失败,但不是保留原始文件不变,而是将其重命名为 P8151927.JPG_exiftool_tmp
。这意味着原始图像似乎丢失了。
有什么办法可以保证,如果 ExifTool 更新失败,原件不会被触及?我的理解是它会用新的/更改的关键字创建一个临时文件,然后执行事务性删除/重命名,无论是否有效,但似乎删除可以成功,但是从临时文件中重命名可以失败。
有什么办法可以解决这个问题 - 我可以使用任何其他选项来使其 100% 有弹性吗?如果没有,我唯一的选择是将文件复制到临时位置,在其上运行 exiftool,然后自己处理重命名/替换。或者,我可以检查返回代码,如果非零,我想我可以将 .JPG_exiftool_tmp
文件重命名回原始文件。
有更好的想法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。