My goal: given a list of files on local server, show any differences to the files with the same absolute path on remote server; e.g. compare local /etc/init.d/apache to same file on remote server.
"Difference" for me means different checksum. I don't care about file modification times. I also do not want to sync the files (yet); only show the diffs.
I have rsync 3.0.6 on both local and remote servers, which should be able to do what I want. However, it is claiming that local and remote files, even with identical checksums, are still different.
Here's the command line:
$ rsync --dry-run -avi --checksum --files-from=/home/me/test.txt --rsync-path="cd / && rsync" / me@remote:/
- "me" = my username; "remote" = remote server hostname
- current working directory is '/'
- test.txt contains one line reading "/etc/init.d/apache"
- OS: Linux 2.6.9
Running cksum on /etc/init.d/apache on both servers yields the same result. The files are the same.
However, rsync output is:
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)
The output codes (see http://www.samba.org/ftp/rsync/rsync.html) mean that rsync thinks
- /etc is identical except for mod time
- /etc/init.d needs to be changed
- /etc/init.d/apache will be sent to the remote server
I don't understand how, with --checksum option, and the files having identical checksums, that rsync should think they're different. (I've tried with other files having identical mod times, and those files are not flagged as different.)
I did run this in /, and made sure (AFAIK) that it's run remotely in /, so even relative pathnames will still be correct.
I ran rsync with -avvvi for more debug info, but saw nothing remarkable.
- is rsync still looking at file mod times, even with --checksum?
- am I somehow not setting up the path(s) right?
- what am I doing wrong?