How to copy a directory with symbolic links and resolve them?

10,918

Solution 1

Just use cp command with -r option to recursively copy. No need of a script all together,

Solution 2

cp -rL /source /destination

r = recursive L = follow and expand symlinks

Share:
10,918
Pwdr
Author by

Pwdr

Interaction Design student who uses Processing and OpenFrameworks for his creative coding projects. SOreadytohelp

Updated on June 05, 2022

Comments

  • Pwdr
    Pwdr almost 2 years

    I would like to recursively copy the contents of a directory which contains symbolic links (symlinks) as well as normal files with a Bash / Shell Script. I don’t know how to copy the symlink-contents. The pseudocode would look something like this:

    for file in directory do
      if is symlink
        resolve symlink and copy its contents
      else 
        copy the file / folder
    

    My directory-structure looks like this:

    base/
      dir1/
      symlinkdir1*/ (--> ../somewhere/else/dirA)
        /file1
        /file2
      symlinkdir2*/ (--> ../somewhere/else/dirB)
        /file3
        /file4
      …
    

    After the copy-procedure, I would like to have a directory-structure like this:

    base/
      dir1/
      symlinkdir1/ (no symlink, actual directory)
        /file1
        /file2
      symlinkdir2/ (no symlink, actual directory)
        /file3
        /file4
      …