Thomas Vander Stichele
on Server Fault
See other posts from Server Fault
or by Thomas Vander Stichele
Published on 2009-06-11T13:24:40Z Indexed on 2012/08/31 3:40 UTC
Read the original article Hit count: 328
Sometimes I have two trees that used to have the same content, but have grown out of sync (because I moved disks around or whatever). A good example is a tree where I mirror upstream packages from Fedora.
I want to merge those two trees again by moving all of the files from tree1 into tree2.
Usually I do this with:
rsync -arv tree1/* tree2
Then delete tree1.
However, this takes an awful lot of time and disk space, and it would be much easier to be able to do:
mv -r tree1/* tree2
In other words, a recursive move. It would be faster because first of all it would not even copy, just move the inodes, and second I wouldn't need a delete at the end.
Does this exist ?
As a test case, consider the following sequence of commands:
$ mkdir -p a/b $ touch a/b/c1 $ rsync -arv a/ a2 sending incremental file list created directory ./ b/ b/c1 b/c2 sent 173 bytes received 57 bytes 460.00 bytes/sec total size is 0 speedup is 0.00 $ touch a/b/c2
What command would now have the effect of moving a/b/c2 to a2/b/c2 and then deleting the a subtree (since everything in it is already in the destination tree) ?
© Server Fault or respective owner