if it is only for a "copy", maybe a scheme like this can be useful:

  • archive dir. struct without following symlinks (tar zcf ..., or pax)
  • list symlinks: if relative they are already copied
  • if not, if file just copy, if dir repeat the process
  • for the general symlink problem, it might be useful to separate dir part from file-part, and break the dir part by components. First we get the list of symlinks in your hierarchy (from the OS, find or whatever), and then process each element of the list:

  • for any symlink /a/b/.../y/z is it a dir?
  • if not then /a/b.../y is a dir!
  • now we study each path component starting with /a
  • is /a a symlink? if it is absolute you list, and keep going down the original path, if it is relative you might do the equivalent of the shell ( cd -P $dir || exit 1; echo $PWD) for a start
  • part of the problem is that some links might be stale or even incorrect when a pattern like ../dir/../dir2/.. is not OK, so an intermediary readlink helps

    just a thought, --stephan

    In reply to Re: Following symlinks manually by sgt
    in thread Following symlinks manually by Tanktalus

    Title:
    Use:  <p> text here (a paragraph) </p>
    and:  <code> code here </code>
    to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.