This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Broken symlinks after rsync

On Mar 18 16:40, Leo Alekseyev wrote:
> I recently tried to transfer the cygwin directory from one machine to
> another by rsyncing the source to an external drive, and rsyncing
> again from external drive to the destination.  As a result, all my
> symlinks got corrupted -- they are now Unicode files with the path
> text.  In particular, if I examine the contents of a valid and an
> invalid symlink files in Emacs, they appeare identical
> (!<symlink>\377\376 followed by the unicode path string). However, one
> works with cygwin on the new machine, and the other doesn't.

For this kind of symlink the problem is the missing DOS SYSTEM file
attribute.  This attribute is used to recognize symlinks in the first
place.  Only files with the SYSTEM bit are opened and their content
examined if they are symlinks.

I don't know anything about your external drive, so I don't know where
the SYSTEM bit was lost.  In fact, rsync should just have tried to create
symlinks either way, so I assume the system bit has gone lost due to
some unrelated operation.

> Both machines are running Cygwin 1.7.
> Any thoughts on whether this can be fixed without a complete reinstall
> / recreation of every link?

find the files by their !<symlink> header and set the DOS SYSTEM
attribute.  That fixes it.


Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

Problem reports:
Unsubscribe info:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]