我需要使用即在触发增量备份时rsync
是否传输整个文件或仅传输对其所做的更改来测试文件的增量备份。rsync
只是为了测试,我创建了一个文件,其详细信息如下:
-rw-r--r-- 1 root root 6.6M Mar 10 11:11 tmp
我使用 rsync 将此文件传输到某个目录,如下所示:
rsync -avr --stats --human-readable tmp remotehost:/tmp/
seq
我只是通过将命令的输出附加到文件来增加文件大小tmp
。
-rw-r--r-- 1 root root 14M Mar 10 11:15 tmp
然后rsync
再次执行该命令,期望它仅传输文件的增量部分。但是,它表明整个文件已被传输:
Number of files: 1
Number of files transferred: 1
Total file size: 13.78M bytes
Total transferred file size: 13.78M bytes
Literal data: 13.78M bytes
Matched data: 0 bytes
File list size: 20
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 13.78M
Total bytes received: 31
sent 13.78M bytes received 31 bytes 27.56M bytes/sec
total size is 13.78M speedup is 1.00
如何交叉检查整个文件是否已传输或仅传输了增量部分?我尝试使用iptraf
和iftop
,但我无法得出任何结论。有没有什么方法可以监控两台主机之间的数据传输?
答案1
线索就在这一行:
Matched data: 0 bytes
这意味着由于某种原因,旧文件中没有任何块与新文件匹配,这意味着整个文件已被传输。如果您对网络流量感兴趣,那么以下行提供了有关此的准确信息:
sent 13.78M bytes received 31 bytes 27.56M bytes/sec
问题是为什么没有数据匹配。根据我的经验,rsync
将正确匹配现有数据,因此问题是运行之间文件到底发生了什么。
答案2
你想要的听起来像是拥有一个与 Dropbox 同步的 Truecrypt 磁盘文件。 Truecrypt 文件中的某些内容发生了更改,并且仅将更改的部分上传到 Dropbox。情况似乎是这样。
你添加文件中的某些内容,使其变大。这是不一样的,我认为这不会起作用,除非你把它放在一个固定大小的容器中。