1.首先,我觉得,任何文件传输软件,在开了校验功能后,那么传输文件的流程,应该是这样的:
A.把文件,从 src 位置传输到 dest 位置。
B.把 dest 的文件,读回来,与 src 进行对比。 对比有很多种方式,比如逐字节对比,或者 hash 对比,等等。但无论如何,文件传输软件,需要一个把文件从 dest 读回来的过程。
比如 Windows 上的文件传输软件 FastCopy 或 TeraCopy ,在勾选校验功能后,在完成文件复制后,都会有一个文件校验过程。
2.rsync 的问题。
OS Version: Debian 11 (bullseye)
rsync Version: version 3.2.3 protocol version 31
command: rsync --verbose --checksum --links --keep-dirlinks --hard-links --executability --sparse --checksum-choice=xxh128 --ignore-times --human-readable --progress /srcHostPath root@DestHostIP:/destHostPath
用它传一个 GB 大小的文件。
我专门指定了参数 checksum ,来让它进行校验。
问题是,开了这个参数后,传输前,会等待很长一段时间,感觉像是 rsync 在读取文件进行校验,但我不知道为啥要这么设计。
在传输完成后,整个复制过程就完成了,感觉 rsync 并没有把该文件,从 dest 再读取回来,进行验证。
请问是我参数用错了?还是 rsync 在打开校验参数后,并没有在文件传输完成后进行校验?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.