syncthing 忽略 Live Photo 视频 MOV 文件

群晖的 Synology Photos 备份 Live Photo 后会在同目录下生成一个同名的 MOV 文件。

若直接备份到其他相册易造成重复,因此我修改了 syncthing 代码:当文件为 MOV 格式时,判断同目录是否存在同名 HEIC 文件,若存在则不同步该 MOV 文件。

diff --git a/lib/model/folder.go b/lib/model/folder.go
index 70fe941f2..c333b5fd3 100644
--- a/lib/model/folder.go
+++ b/lib/model/folder.go
@@ -695,7 +695,27 @@ func (f *folder) scanSubdirsChangedAndNew(ctx context.Context, subDirs []string,
 			}
 			return changes, err
 		}
-
+		
+		// 判断并忽略属于 Live Photo 的 .mov 视频文件
+		fileName := res.File.Name
+		// 检查文件扩展名
+		if strings.HasSuffix(strings.ToLower(fileName), ".mov") {
+			// 去掉扩展名
+			baseName := fileName[:len(fileName)-4]
+			
+			// 构建同名的 .heic 文件路径
+			heicPath := baseName + ".heic"
+			heicPathUpper := baseName + ".HEIC"
+
+			_, err1 := f.mtimefs.Stat(heicPath)
+			_, err2 := f.mtimefs.Stat(heicPathUpper)
+			if err1 == nil || err2 == nil {
+				// 找到了同名的 HEIC 文件,忽略
+				f.sl.DebugContext(ctx, "Ignoring Live Photo video", slog.String("file", fileName))
+				continue
+			}
+		}
+		
 		if ok, err := batch.Update(res.File); err != nil {
 			return 0, err
 		} else if ok {

编译使用

GOFLAGS=-buildvcs=false CGO_ENABLED=0 go run build.go \
    -no-upgrade \
    -version=v2.3.3 \
    build syncthing

2 Replies to “syncthing 忽略 Live Photo 视频 MOV 文件”

  1. 您好,我想问一下,我用的是黑群晖,一次断电后,我的这个群晖web界面里的filestation组件无法使用,修复也无法修复成功,一直处于停用状态,好在是现在磁盘没坏,仍可以对其进行读写操作,但是就是web界面无法登录上去进行上传功能,只能本地使用,网上关于这方面的信息比较少,想问问大佬对于这个问题有没有解决方案,希望给个联系方式,如有帮助,必有重谢

    1. 不好意思,没看到邮件。

      去 SSH 用 synopkg 修复下试试看看有没有错误,或者看下系统日志,如果日志也看不出来直接备份数据重置。

      rr 引导好像是有个强制重装系统的功能,注意不是群晖系统内的重置(系统内的重置好像是清空所有硬盘数据)。可以保持数据除了套件以外的数据重置。

      这种系统数据损坏的你修一个地方可能还有别的地方也存在问题,不如重置省心。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理