rsync -c -i将相同的文件标记为不同的文件

我的目标是:给出本地服务器上的文件列表,显示远程服务器上具有相同绝对path的文件的任何差异; 例如比较本地/etc/init.d/apache到远程服务器上的同一个文件。

对我来说“差异”意味着不同的校验和。 我不在乎文件修改时间。 我也不想同步文件(还); 只显示差异。

我有本地和远程服务器上的rsync 3.0.6,应该能够做我想要的。 然而,声称本地和远程文件,即使是相同的校验和,仍然是不同的。

这是命令行:

$ rsync –dry-run -avi –checksum –files-from = / home / me / test.txt –rsync-path =“cd /&rsync”/ me @ remote:/

哪里:

  • “我”=我的用户名; “远程”=远程服务器主机名
  • 当前工作目录是'/'
  • test.txt包含一行读取“/etc/init.d/apache”
  • 操作系统:Linux 2.6.9

在两台服务器上的/etc/init.d/apache上运行cksum会得到相同的结果。 这些文件是一样的。

但是, rsync输出是:

me@remote's password: building file list ... done .d..t...... etc/ cd+++++++++ etc/init.d/ <f+++++++++ etc/init.d/apache sent 93 bytes received 21 bytes 20.73 bytes/sec total size is 2374 speedup is 20.82 (DRY RUN) 

输出代码(请参阅http://www.samba.org/ftp/rsync/rsync.html )意味着rsync认为

  • 除了mod时间之外,/ etc是相同的
  • /etc/init.d需要改变
  • /etc/init.d/apache将被发送到远程服务器

我不明白怎么用–checksum选项和具有相同校验和的文件,rsync应该认为它们是不同的。 (我已经尝试了与其他文件具有相同的时间,这些文件不标记为不同。)

我确实在/运行了这个,并确保(AFAIK)它在/远程运行,所以即使相对path名仍然是正确的。

我用-avvvi运行rsync来获取更多的debugging信息,但是没有看到任何显着的结果。

我在想:

  • 是rsync仍然在看文件模式时代,甚至用–checksum?
  • 我不知道如何设置path吗?
  • 我究竟做错了什么?

既然“-a”相当于“-rlptgoD”,那么是的,它仍然在看mod时间(“-t”)。

尝试用“-rlpgoD”replace“-a”,看看这是怎么回事。

这可能是一个权限问题。 “我@远程”是否有权限读取远程服务器上的/etc/init.d/apache?

您可能需要在远程rsync或本地rsync或两者上使用–fake-super选项。

该目录具有不同的创build/修改/访问时间,所有者或权限…不要使用-a选项,只尝试-r

祝你好运