rsync: how to recreate hard-links after removed and recreated a file?

1

This is what I have:

--dir1
----file1
----file2

Then I created another directory dir2 with hard-links.

--dir2
----file1 (hard link to dir1/file1)
----file2 (hard link to dir1/file2)

Now I removed file1 and recreated a new one with the same name. How do I make the file1 in dir2 change the hard link to the new file?

leonbnu

Posted 2011-11-15T22:58:30.750

Reputation: 181

What does this have to do with rsync? – kbyrd – 2011-11-15T23:04:35.900

Maybe not directly. dir2 is created using rsync. It's basically used as a building directory for the source code in dir1 so that some temporary building stuff can be written in this directory without mess up the source directory dir1. Also, dir1 is huge, so hard links can save up some space. – leonbnu – 2011-11-16T00:36:34.860

Answers

1

You need to rm dir2/file1 then redo the hardlink. Hardlinks are not like symlinks. Where symlinks are a pointer to an original file, hardlinks are generally indistinguishable from the original file. When you deleted dir1/file1, dir2/file1 became the new "original". So, in order to have a hardlink named dir2/file1, you have to get this now-original-file dir2/file1 out of the way.

kbyrd

Posted 2011-11-15T22:58:30.750

Reputation: 2 067