rsync --info=progress2 复制大目录的完成百分比不均匀?

eyn*_*eyn 3 sync rsync

rsync --info=progress2 复制大目录的完成百分比不一致,因为最后 10% 似乎比前 90% 花费的时间更长。

为什么会这样?有没有办法让它成为一个更统一的进度指示器?

Per*_*uck 8

观察到的行为的原因可能是文件系统缓存:

当写入文件时(就像这样rsync做),通常数据会首先写入缓存(在内存中),并且写入操作几乎立即返回。然后,数据会在后台写入磁盘,而用户已经可以执行其他操作。

如果缓存足够大,可以容纳要写入的数据,那么就会假装具有巨大的写入速度。

如果要写入的数据无法放入文件系统缓存,那么多余的数据实际上会在写操作完成之前写入磁盘,并且写入磁盘比写入内存缓存慢。

多余的数据不会绕过缓存,而是等待之前的内容从缓存移动到磁盘,从而在缓存中再次提供一些可用空间,以便将新数据写入缓存。

因此,数据的第一部分(在您的情况下为 90%)似乎是立即写入(到缓存),而最后 10% 则需要更多时间,因为然后才开始实际的磁盘操作。