← Back to context

Comment by rakel_rakel

1 hour ago

You can see it in the code, lstat vs stat and copy_special, copy_fifo vs copy_file. They're all in utils.c.

from the lstat man page:

     The lstat() function is identical to stat() except when the named file is
     a symbolic link, in which case lstat() returns information about the link
     itself, not the file the link references.

symbolic link example:

    $ tree test1
    test1
    |-- file.txt
    `-- link.txt -> ../link.txt

    0 directory, 2 files

    $ cp -r test1 test2
    $ tree test2
    test2
    |-- file.txt
    `-- link.txt

    0 directory, 2 files

    $ cp -R test1 test3
    $ tree test3
    test3
    |-- file.txt
    `-- link.txt -> ../link.txt

    0 directory, 2 files

For posterity, -R with added -L

    $ cp -RL test1 test4
    $ tree test4/
    test4/
    |-- file.txt
    `-- link.txt

    0 directory, 2 files