15 rsync
像这样使用大* 运行 rsync --block-size
:
rsync -avvz --rsh 'ssh -c arcfour' --block-size 1048576 --inplace --progress example.com:/big.file /big.file
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Invalid block length 1048576 [sender]
Run Code Online (Sandbox Code Playgroud)
两端都运行 64 位 CentOS 6.4。从谷歌搜索中我看到--block-size
使用了更高的值,为什么这对我不起作用?
*我正在使用大块大小,因为我正在尝试解决一个错误,即 rsync 只是将 CPU 永远旋转 44% 到一个 300GB 的文件中
Run*_*ium 13
从来源:
int32 max_blength = protocol_version < 30 ? OLD_MAX_BLOCK_SIZE : MAX_BLOCK_SIZE;
sum->blength = read_int(f);
if (sum->blength < 0 || sum->blength > max_blength) {
rprintf(FERROR, "Invalid block length %ld [%s]\n",
(long)sum->blength, who_am_i());
exit_cleanup(RERR_PROTOCOL);
}
Run Code Online (Sandbox Code Playgroud)
哪里:
#define OLD_MAX_BLOCK_SIZE ((int32)1 << 29)
#define MAX_BLOCK_SIZE ((int32)1 << 17)
Run Code Online (Sandbox Code Playgroud)
分别是536870912
(512M)和131072
(128k)。
这种变化是在版本中所做V3.0.0和支持OLD_
是在v3.0.3加入。(链接解释了更改背后的一些基本原理。)
[PATCH] 一个补丁,尝试处理非常大的文件,而不会陷入发送方哈希表搜索的困境。
[PATCH] 通过处理协议 < 29 的旧块大小限制,修复了使用旧 rsync 版本发送大文件的问题。