本人一直是使用 syncthing 同步当作自己的网盘的,但是最近不知道是不是 NAS 的 2W 小时硬盘要寿终正寝了,tranmission 会时不时提醒有种子数据损坏。
这时我突然想到我自己的“网盘”在这块硬盘上也是有一个魂器的(皮一下,其实就是有一个 syncthing 程序),如果这个设备的硬盘经常发生错误,syncthing 能区分出这些错误吗?
我询问了 chatgpt ,它说syncthing 不能识别这些错误而且会把错误当成修改同步到其他设备。
如果两端都是未加密的我觉得很有可能会这样,但如果易损坏的那端文件是加密的是否不会同步并且发现错误呢?
我不知道官方的文档里有没有对类似问题的解释,但我自己是没找到,如果已经有介绍类似知识的文章希望能分享下。
1
qingmuhy0 OP 提问末尾忘了说了,如果的确会同步错误大家有啥解决方案不?
我自己想到这款提供数据冗余度的软件,因为需要同步并且非常重要的数据其实并不多( 150G 这样),我觉得加个一倍的冗余度都不为过。 https://www.appinn.com/multipar-parchive-tool/ |
2
qzwmjv 2023-03-30 10:31:48 +08:00
raid1 + 异步备份
|
3
datocp 2023-03-30 11:35:12 +08:00
之前讨论类似问题时,按我掌握的知识比较可靠的是 snapraid 。但是这东西怎么是多个文件备份成单 1 文件,这点我是无法接受的,感觉单个文件出问题的机率大大的增加。要是能够切割或者 1 对 1 备份更好。
平时 windows 共享数据库备份到其它机器都是使用 SyncBackV3.2.26.0 。老版本免费版没什么限制用了好多年了。前提就是源文件根本不会出问题。 其它的就是 fastcopy 这种据说能校验文件校验值的程序,这东西不擅长。 所以一切的问题又变成如何校验硬盘或者文件损坏,之前想过一些烂方法向空白硬盘复制拷贝同样的文件占满硬盘,通过校验文件 md5 之来确定硬盘的不同区域是否有问题。之后出现了 snapraid 似乎这些问题更智能化解决了,可是备份成一个单 1 的大文件不可接受。平时用 SyncBack 这么多年似乎也一直没问题。。。 multicopy 4 test.txt #将 test.txt 复制 4 份 multicopy.cmd @echo off echo. if NOT "%2"=="" goto next1 echo %0 will make the specified number of copies of a file to (by default) the current folder echo The copies will have '(Copy n) ' added at the beginning of the filename, where 'n' is the count echo . echo Useage: %0 copies source_file [destination folder] echo example: %0 10 test.txt C:\temp goto end :next1 if EXIST ".\%2" goto next2 echo file %2 not found goto end :next2 set count=%1 set destination=%3 if "%3"=="" set destination=. :repeat @echo on ::copy %2 "%destination%\(Copy %count%) %2" copy %2 "%destination%\%2_%count%" @echo off ::pause set /a count=%count%-1 if %count% LEQ 0 echo Requested number of copies (%1) have been made. if %count% LEQ 0 goto end goto repeat :end |
4
iyiluo 2023-03-30 11:41:02 +08:00
提前生成一份所有文件的 md5 ,每次同步前都校验一下原始文件的 md5 ,如果对不上说明文件已经损坏
|
5
sc104501 2023-03-30 14:25:40 +08:00
我感觉 pt 开始报错的时候,其实硬盘上可能已经有很多问题了。
重要的资料可以考虑用 zfs 分区放。能检测块完整性。zfs 支持定期 scrub 检查,也能定期 syncthing 类似的跨网络备份(但不是自动的)或者文件版本管理,快照。 就算没有 raid ,至少 zfs 能看到文件是否完整。不至于冷数据已经损坏了还不知道。 |
6
qingmuhy0 OP @sc104501 感谢,本来一直懒得搞,一直用 ext4 ,今天研究下发现 zfs 得很多特性真的很有用。
|
7
dann73580 2023-03-31 03:05:20 +08:00
主要是 syncthing 没办法验证数据的正确性,数据的正确性在 syncthing 这头是不透明的,它只知道有哪些文件能传输,那当然好的坏的都会包括。另一方面讲,syncthing 的加密体现在传输过程的加密,端到端的,哪怕走了中继服务器,中继服务器也不能解密。你说的这个还得看文件系统来实现,比如说 zfs ,或者 ceph 或者 minio 用到的纠删码。
|
8
MeteorVIP 2023-03-31 11:56:56 +08:00 via iPhone
我理解的同步应该是不管病毒还是破损文件都应该同步的,它的功能就是无差别同步。
至于文件破损之类的问题应该换硬盘处理。 |
9
qingmuhy0 OP @MeteorVIP 所以其实我一直拿他做为网盘使用的用法是存在一定问题的吧,它说不定会出现同步的设备越多越容易造成数据错误的情况。
|
11
huajingyu 2023-03-31 19:42:17 +08:00
我使用 OneDrive ,前阵子特意测试了这个情况,开虚拟机登录 OneDrive 桌面版下载文件后关机,用 16 进制编辑器破坏这个文件,之后开机并打开文件,内容是破坏过的,但不会被同步上去。
后面我记不太清了,如果释放空间时似乎会报错并把这个被破坏的文件修改文件名重新同步上去,原来未被破坏的会保留,(未损坏的文件释放后就是释放了,不会做其它操作。)如果修改文件,应该会保留被破坏的内容并同步上去,当时我似乎并没有测试…… 另外,使用劣质存储设备可能会遇到包括但不限于文件损坏、文件消失等问题,理论上这可能导致云上的文件被删除。 缓解方法是使用支持修复和完整性检查的文件系统,比如 ReFS 打开完整性流。还有就是记得经常检查云端的回收站,确保文件没有消失。也可以用包括但不限于文件校验和、备份文件列表等手段来确保文件是齐全的。 关于硬盘,据说硬盘有扇区校验的功能,但是我曾经有遇到一次文件读取不出来(复制到一半时硬盘卡死),后面还遇到过文件变成 0 KB 、文件中部分内容损坏的问题。不知道是不是因为我开了 EFS 加密。 |