23

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
  …
Pwdr
  • 3,712
  • 4
  • 28
  • 38

2 Answers2

58

cp -rL /source /destination

r = recursive L = follow and expand symlinks

Amir
  • 10,600
  • 9
  • 48
  • 75
Daniele Testa
  • 1,538
  • 3
  • 16
  • 34
-4

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

Rahul
  • 76,197
  • 13
  • 71
  • 125