活动结束想换水印文案,发现媒体库里 2000 张图已经是压过水印的版本,原图被同名覆盖,只能从 CDN 缓存里找回一部分。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

mkdir -p out
for f in src/*.jpg; do
  convert "$f" -gravity southeast -composite wm.png "out/$(basename "$f")"
done

批处理脚本把输出路径写成和输入相同,图像工具直接覆盖源文件。上传前也没有单独备份原图目录。这一点先确认清楚,后面就不用反复试。

「水印覆盖原图」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。

具体做法是,输出统一写到带后缀的新目录,源目录设为只读;脚本里先判断输出路径是否等于输入,相等就退出;原图单独备份一份,不参与任何批处理;已经覆盖的从对象存储版本或备份里恢复。

改完照着核一遍,源目录文件的修改时间不变,输出目录里是新图,重新生成只需换水印素材。

作者 9823189