当备份将文件从一台服务器移到另一台时,df的结果每隔几秒就以一种不可能的方式改变。 源主机正在运行rsync。 在目标主机上,我每隔几秒运行以下命令:
echo `date` `df|grep md0`
结果如下:
Sat Jun 29 23:57:12 CEST 2013 /dev/md0 4326425568 579316100 3527339636 15% /MD0 Sat Jun 29 23:57:14 CEST 2013 /dev/md0 4326425568 852513700 3254142036 21% /MD0 Sat Jun 29 23:57:15 CEST 2013 /dev/md0 4326425568 969970340 3136685396 24% /MD0 Sat Jun 29 23:57:17 CEST 2013 /dev/md0 4326425568 1255222180 2851433556 31% /MD0 Sat Jun 29 23:57:20 CEST 2013 /dev/md0 4326425568 1276006720 2830649016 32% /MD0 Sat Jun 29 23:57:24 CEST 2013 /dev/md0 4326425568 1355440016 2751215720 34% /MD0 Sat Jun 29 23:57:26 CEST 2013 /dev/md0 4326425568 1425090960 2681564776 35% /MD0 Sat Jun 29 23:57:27 CEST 2013 /dev/md0 4326425568 1474601872 2632053864 36% /MD0 Sat Jun 29 23:57:28 CEST 2013 /dev/md0 4326425568 1493627384 2613028352 37% /MD0 Sat Jun 29 23:57:32 CEST 2013 /dev/md0 4326425568 615934400 3490721336 15% /MD0 Sat Jun 29 23:57:33 CEST 2013 /dev/md0 4326425568 636071360 3470584376 16% /MD0
正如你所看到的,我从15%的USE开始,在15秒之后我开始了37%(我不需要提到备份不能在如此短的时间内复制这么大量的数据)。 约20秒后,循环closures。 我再次大致和早前一样。 价值是合理的,约。 35 Mb被复制。
有人可以向我解释发生了什么事吗? df是否仅仅使用而不是使用价值的估计?
因为rsync复制到临时文件,然后replace旧文件。 此外,rsync只传输差异,而不是整个文件。
因此,如果你有一个20M的文件,其中10M已经改变,rsync将首先复制目标系统上的20G文件到一个临时目录,然后传输10M差异并将其应用到副本。 最后它用新的replace旧文件。
这是为了防止在部分传输失败的情况下文件的损坏。
为避免创build临时文件和更新文件,请使用--inplace标志。