символические ссылки копирования linux и их иерархия

символические ссылки копирования linux и их иерархия

Допустим, у меня есть следующая структура:

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

Я хотел бы скопировать libfoo.soи использовать его также libfoo.so.4и libfoo.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/

Связанный контент