폴더 구조를 복사하고 파일에 대한 심볼릭 링크를 만드는 방법은 무엇입니까?

폴더 구조를 복사하고 파일에 대한 심볼릭 링크를 만드는 방법은 무엇입니까?

각각 자체 파일이 있는 여러 하위 폴더가 포함된 SOURCE 폴더가 있습니다.

이 폴더를 디렉터리 구조를 복사해야 하는 새 폴더에 복사하고 파일을 SOURCE 및 해당 하위 폴더의 원본 파일에 대한 심볼릭 링크로 유지하고 싶습니다.

답변1

임베디드 Linux 및 Cygwin에 대한 솔루션은 다음과 같습니다.

cp -as SOURCE/ COPY

SOURCE는 뒤에 슬래시가 있는 절대 경로여야 합니다. 상대 경로를 제공하려면 다음을 사용할 수 있습니다.

cp -as "$(pwd)/SOURCE/" COPY

답변2

기존 트리의 섀도우 디렉토리 트리를 구축할 수 있는 표준 유틸리티가 2개 이상 있으므로 여기에 코드를 작성할 필요가 없습니다.

첫 번째는 패키지 lndir(1)에 들어 있는 내용 입니다 xutils-dev. 파일에 대한 심볼릭 링크를 사용합니다. 매뉴얼 페이지에서:

NAME
   lndir  -  create a shadow directory of symbolic links to another
             directory tree
SYNOPSIS
   lndir [ -silent ] [ -ignorelinks ] [ -withrevinfo ] fromdir [ todir ]

cp아마도 더 나은 옵션은 허용된 답변에 표시된 대로 올바른 옵션을 사용하는 것입니다 . 좀 더 도움이 되길 바라는 세부정보를 제공하겠습니다.

cp -al /src/dir /dest/dir    # hard-links to leaf-files
cp -as /src/dir /dest/dir    # symlinks to leaf-files

모든 속성(소유권/권한, 시간)을 보존하는 데 관심이 없다면 옵션 a(동등 -dr --preserve=all) 을 r(재귀 전용)으로 바꾸세요.

cp -rl /src/dir /dest/dir    # hard-links to leaf-files
cp -rs /src/dir /dest/dir    # symlinks to leaf-files

답변3

다음과 같은 몇 가지 찾기 명령을 시도해 볼 수 있습니다.

mkdir FULL-PATH-TO-COPY
cd SOURCE
find . \( ! -regex '\.' \) -type d -exec mkdir FULL-PATH-TO-COPY/{} \;
find * -type f -exec ln -s `pwd`/{} FULL-PATH-TO-COPY/{} \;

답변4

이와 같은 POSIX 스크립트는 귀하의 요구 사항을 충족합니다.

#!/bin/sh
#
SOURCE="$1" COPY="$2"
cd "$SOURCE"
find . |
    sed 's!^\./!!' |
    while IFS= read -r ITEM
    do
        if test -d "$ITEM"
        then
            mkdir -p "$COPY/$ITEM"
            continue
        fi
        BASE="${FILE%\/*}"
        ( cd "$COPY/$BASE" && ln -s "$SOURCE/$ITEM" )
    done

대상 COPY 트리에 디렉터리를 생성합니다. 다른 모든 것은 SOURCE 트리의 절대 경로로 다시 심볼릭 링크됩니다. SOURCE와 COPY가 모두 절대 경로(로 시작)로 지정되었는지 확인하세요 /.

큰 트리를 복사하고 각 디렉터리에 대한 진행 보고서를 원하는 경우 명령 echo "$ITEM" >&2;앞에 를 추가 할 수 있습니다 mkdir.

(POSIX를 살펴봤지만 cpcpio다 심볼릭 링크를 사용하여 소스에 연결하는 옵션이 없는 것 같습니다.)

관련 정보