On Fri, 2007-12-28 at 17:31 +0100, Erik Pettersson wrote: > I'm trying out the 'detect-renamed'-patch, and I've encountered some > odd behavior.
> Basicly, what I've noticed is that if I move a file into a newly > created directory (which is what happens if I rename a directory, for > example), the file isn't detected as renamed. However, if I manually > create the new directory on the target-side, the file is correctly > detected as a rename, and isn't transfered over the network. > > Here I've moved 'file' into a newly created directory 'dir2', which > isn't available on the target-side. > > > $ find src > > src > > src/dir1 > > src/dir1/dir2 > > src/dir1/dir2/file > > > > $ find dst > > dst > > dst/dir1 > > dst/dir1/file > > > > $ rsync -avv --detect-renamed -e ssh src/dir1 localhost:dst > > [...] > > total: matches=0 hash_hits=0 false_alarms=0 data=4544512 > > The file isn't detected as a rename. I see what the problem is. When the receiving rsync considers dst/dir1/file for a rename, dst/dir/dir2 does not yet exist, so rsync cannot create the partial dir for dst/dir/dir2 in order to stage the rename. One workaround would be to do a preliminary run with --include='*/' --exclude='*' to create all the necessary directories in the destination before doing the main run. One possible fix would be to call create_directory_path to ensure that the destination directory that is the target of the rename exists before handling the partial dir. Unfortunately, create_directory_path will give any created directories default permissions instead of flist ones, which could be bad. To avoid this problem, rsync could look up each intermediate directory in the flist and, if it is found, give it 700 permissions for later fixing (like the incremental recursion code does). This is awkward, which I believe is a sign that the "reverse" design of pre-scanning the destination files and looking up each source file in turn may be better. This design was proposed by Charles Perreault to me off-list and quoted in: http://lists.samba.org/archive/rsync/2007-November/019067.html Matt -- To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html