我使用 rsync 和-vrlHh --delete --stats --force
选项来镜像两个目录。第一个目录是源目录,是我的外部硬盘,目标目录是空的,因为我刚刚创建了它。
我运行rsync -vrlHh --delete --stats --force my_hd dest_dir
并得到这个输出。
...
2012/05/12 11:59:29 [18094] Number of files: 189315
2012/05/12 11:59:29 [18094] Number of files transferred: 178767
2012/05/12 11:59:29 [18094] Total file size: 241.57G bytes
2012/05/12 11:59:29 [18094] Total transferred file size: 241.57G bytes
2012/05/12 11:59:29 [18094] Literal data: 241.57G bytes
2012/05/12 11:59:29 [18094] Matched data: 0 bytes
2012/05/12 11:59:29 [18094] File list size: 4.08M
2012/05/12 11:59:29 [18094] File list generation time: 0.002 seconds
2012/05/12 11:59:29 [18094] File list transfer time: 0.000 seconds
2012/05/12 11:59:29 [18094] Total bytes sent: 241.61G
2012/05/12 11:59:29 [18094] Total bytes received: 3.44M
2012/05/12 11:59:29 [18094] sent 241.61G bytes received 3.44M bytes 30.67M bytes/sec
2012/05/12 11:59:29 [18094] total size is 241.57G speedup is 1.00
我的问题是,如果目标目录为空,为什么会有所不同Number of files
?Number of file transferred
答案1
我相信你正在经历http://lists.samba.org/archive/rsync/2008-April/020692.html。
简而言之,rsync
根据上下文以不同的方式使用“文件”一词。在第一个“文件数”计数中,它会计算所有内容。在第二个“传输的文件数”中,它不会将符号链接和目录计为文件。
例子:
$ mkdir test
$ touch test/testfile
$ ln -s testfile test/testlink
$ ls -FR test
test:
testfile testlink@
$ rsync -vrlHh --stats test test2
sending incremental file list
created directory test2
test/
test/testfile
test/testlink -> testfile
Number of files: 3
Number of files transferred: 1
Total file size: 8 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 67
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 126
Total bytes received: 38
sent 126 bytes received 38 bytes 328.00 bytes/sec
total size is 8 speedup is 0.05
$ ls -FR test2
test2:
test/
test2/test:
testfile testlink@
答案2
来自作者 Mike Bombich[电子邮件保护]:
对于统计信息,rsync 使用“文件”一词时不一致。报告“文件总数”时,它表示文件系统对象总数,包括常规文件、目录、符号链接、特殊文件和设备。报告传输的“文件”数量时,它仅指常规文件。
因此,如果其中有任何非常规文件(包括目录),它们将不会被包括在计数中。