I need a Linux program similar to an
rsync -a foodir targethost:foodir2 copy, but for each file in
foodir it should find similar files in
foodir2, and transfer only the difference.
rsync can't do this. For example, if there is a file
foodir/bar, but no file
foodir2/bar, then rsync will copy the entire file, even if there is
foodir2/baz, which is very similar to
foodir/bar, and could be used as a base for a binary diff. What I want is that the program finds in
foodir2 (recursively) the file most similar to
foodir/bar, and uses it as the base. Finding identical files only is not enough, because I want to copy MP3 files where only the ID3 tags are different (so the files are very similar, but not identical).
How to synchronize between differently structured directories using rsync (or other program) suggests comparing MD5 checksums or using fdupes, but it would not work, because I'm looking for similar, but not necessarily identical files.