moondigi 发表于 2024-2-7 19:40

syncthing不懂移动文件是bug吗?

版本v1.27.3, Linux (64-bit Intel/AMD)

1.两台机器/sync/A目录已同步完成
2.在A机器上操作文件夹,将/sync/A/a/01移动改名成/sync/A/b
3.B机器上出现的同步结果是:删除了/sync/A/a/01;从A机器上重新下载/sync/A/b

正常来说不是应该和A机器一样将目录移动过去的吗?

日日夜夜 发表于 2024-2-7 20:06

不熟syncthing,但正常来说不是"应该和A机器一样将目录移动过去的",比如rsync不用一些技巧也是删除和新建,除非你的同步软件有什么办法监视移动操作,或是同步端使用了什么算法提示新同步的文件已存在

limon 发表于 2024-2-7 22:40

他只知道这里多了个文件那里少了个文件,并不知道这里多的就是那里少的那个

ma05758 发表于 2024-2-7 22:54

这不是正常同步了?没啥bug吧

01046 发表于 2024-2-8 10:06

你这有点强人所难了

—— 来自 Google Pixel 8 Pro, Android 14上的 S1Next-鹅版 v2.5.4

可爱美味祥子 发表于 2024-2-8 13:37

Nextcloud可以,但代价是每个同步文件夹都创建一个sqlite数据库存文件名、大小和哈希,移动以后会本地比较两个文件是否相同

moondigi 发表于 2025-1-12 21:30

差不多一年了,终于搞懂了syncthing这个傻吊bug

首先结论是,syncthing正常情况下是懂移动文件的,然而:

当你大量移动/重命名文件的时候会触发syncthing的重新扫描,当syncthing重新扫描*途中*你如果有对其他文件操作,那么这些文件就全被当作是新文件要重新传

举个例子,A文件夹有100个文件,你将这100个文件重命名或者修改A文件夹的名字就会触发syncthing的重新扫描
如果你没等syncthing扫描完成就去改名B文件夹里面的50个文件,那么这50个文件就需要重新传
如果你等syncthing扫描完成了并且同步完成了后再做以上操作,那么远端就只会重命名而不会重新传

Nanachi 发表于 2025-1-12 22:50

转个人免费的resilio sync呢

—— 来自 鹅球 v3.3.96

conanlm 发表于 2025-1-13 07:31

moondigi 发表于 2025-1-12 21:30
差不多一年了,终于搞懂了syncthing这个傻吊bug

首先结论是,syncthing正常情况下是懂移动文件的,然而:

那么有办法控制重新扫描的频率,或暂停重新扫描吗

moondigi 发表于 2025-1-13 07:49

conanlm 发表于 2025-1-13 07:31
那么有办法控制重新扫描的频率,或暂停重新扫描吗

syncthing是用inotify监控文件更改的,可以取消只启用定时扫描但是这样平时体验不好

目前的解决办法是如果有大量修改,在本地的服务界面上将远端设备暂停,本地一通操作后等待左边目录扫描完成,当目录上显示最新后再取消远端暂停
页: [1]
查看完整版本: syncthing不懂移动文件是bug吗?