我通过使用--dry-run
( -n
)再次运行该过程来验证 rsync 备份的完整性选项添加。根据奥莱利的说法所有不同的文件都会出现在终端输出中,但令我困惑的是,在他们的示例以及我的两个测试中,rsync 仍然报告有书面数据。我有一个多 TB 的存档,对我来说,该值以兆字节为单位。
第一个 rsync 实际执行复制,而第二个 rsync 仅报告差异,这要归功于选项
-n
。如果没有差异,则输出将如下所示:receiving file list ... done wrote 16 bytes read 7478 bytes 4996.00 bytes/sec total size is 3469510 speedup is 462.97
如果有任何文件不同,它们的名称将出现在“接收文件列表”消息之后:
receiving file list ... done /bin/ls /usr/sbin/sshd wrote 24 bytes read 7486 bytes 5006.67 bytes/sec total size is 3469510 speedup is 461.99
答案1
rsync
数据的写入和读取是指源进程和目标进程之间元数据的通信。这些之间仍然需要沟通确认没有元数据发生变化,并且不需要传输任何内容,并且要做到这一点书面和读通过网络连接。
- Hey, this is my list of files, with their types, permissions,
ownership and stuff. Is that any different from what you have?
- No, that's exactly what I have.
(Alternatively: No that's not what I have,
but we're in dry-run mode so never mind)
- Cool, thanks, seeya later!
- Bye!
文件列表越大,需要通过网络连接传送的数据就越多,以确认没有发生任何更改。
当使用-n
or时--dry-run
,您基本上告诉rsync
进行文件列表和元数据的通信,但不更新磁盘上的文件,即使源和目标之间的情况不同。为此,仍然需要传输数据。