리눅스 복사 심볼릭 링크 및 해당 계층

리눅스 복사 심볼릭 링크 및 해당 계층

다음과 같은 구조가 있다고 가정해 보겠습니다.

root
|
\
  dir1
  |
  | \
  |  libfoo.so.4.2
  |  libfoo.so.4 -> libfoo.so.4.2
  |  libfoo.so -> libfoo.so.4
     JunkThatShouldntBeCopied
  dir2

libfoo.so나는 그것을 또한 libfoo.so.4libfoo.so.4.2에 복사하여 사용하고 싶습니다 root/dir2.

  • 내가 원하지 않는 다른 파일이 많이 포함되어 있기 때문에 해당 디렉토리 전체를 복사할 수 없습니다.
  • libfoo.so또한 가리키는 파일의 정확한 이름도 모릅니다 .

어떻게 해야 합니까?

답변1

나는 다음과 같은 것을 생각할 수 있습니다 :

trace() {
  arr+=("$1")
  local next="$(readlink "$1")"
  if [ -n "$next" ]; then
    trace "$next"
  fi
}
$ cd /tmp/a/
$ unset arr; trace 3
$ rsync -vl "${arr[@]}" /tmp/b/
created directory /tmp/b
1
2 -> 1
3 -> 2

sent 125 bytes  received 70 bytes  390.00 bytes/sec
total size is 2  speedup is 0.01
$ 

답변2

cp -Pp /root/dir1/libfoo.so* /root/dir2/

관련 정보