rsync 一个超大文件夹“./attachments”过后,怎样检测两台服务器的这个“./attachments”文件夹一模一样

2019-08-20 08:44:46 +08:00
 kisshere

“./attachments ”文件夹约 2T,内部有几百万个文件,怎样检测这两个文件夹内部文件一模一样

3033 次点击
所在节点    程序员
18 条回复
i4oolish
2019-08-20 08:50:29 +08:00
递归遍历,MD5 比对?
vuuv
2019-08-20 08:59:09 +08:00
rsync -c 即可检查。
shawndev
2019-08-20 09:30:12 +08:00
原本答案和 1 楼一样,看完 2 楼查了一下 manual 支持 2 楼。
codingbaby
2019-08-20 09:56:00 +08:00
md5sum ./attachments
ThinkZ
2019-08-20 10:03:05 +08:00
难道不是再同步一次?如果不一致,还不是要重新同步一次
dot2017
2019-08-20 10:07:21 +08:00
md5sum 并不适合检查文件夹,更适合文件
Jeffrey4l
2019-08-20 10:34:43 +08:00
find . -type f -exec md5sum {} \; > FILES
smallpython
2019-08-20 10:40:04 +08:00
把文件打成 tar 包
看看 tar 包的 md5 值一样不一样
lihongjie0209
2019-08-20 10:41:32 +08:00
@smallpython #8 你想打包一个 2T 的文件夹?
zeyexe
2019-08-20 10:48:21 +08:00
@smallpython #8 不能保证两次打包的 md5 值是一样的。
nullboy
2019-08-20 10:52:17 +08:00
rsync -avP ?
geelaw
2019-08-20 10:54:46 +08:00
@lihongjie0209 #9 tar 可能是可以 O(1) 额外空间复杂度计算的,md5 是可以 O(1) 额外空间复杂度计算的,因此整个过程是可以流式计算的。

真正的问题并不是计算时间,很可能 文件夹 到 tar 的映射不是 deterministic wrt 内容的,因为 tar 里面还存放了很多其他数据,而且文件的存放顺序也可能是灵活的。
SingeeKing
2019-08-20 11:15:41 +08:00
rclone check
reus
2019-08-20 11:37:01 +08:00
-c, --checksum skip based on checksum, not mod-time & size

用 rsync -c
otakustay
2019-08-20 12:38:59 +08:00
2 个内容一模一样但是 chmod 不一样的文件是不是一样?
2 个内容和 chmod 都一样但 mtime 不一样的文件是不是一样?
vuuv
2019-08-20 13:55:27 +08:00
@ThinkZ #5 rsync 默认根据大小及时间快速判断文件是否需要同步,有较低可能出现内容不一致的情况(主要是不敢赌)。
而-c 可以显著减小这个风险。如果还不放心,再上 md5+sha1 校验文件。
常规要求文件安稳的做法 rsync -c 即可满足。
smallpython
2019-08-20 14:12:25 +08:00
@zeyexe 我测试了
随便 tar 了一个文件夹
两次 tar 包的 MD5 值是一样的
ritaswc
2019-08-20 14:14:24 +08:00
1、是否存在文件 /文件夹
2、两个文件都存在,对比文件大小是不是同一个数值
3、如果文件大小是同一个数值,对比 sha1 或者 md5

如果我是这个开发者 我会这样做

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/593361

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX