각각 자체 파일이 있는 여러 하위 폴더가 포함된 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를 살펴봤지만 cp
둘 cpio
다 심볼릭 링크를 사용하여 소스에 연결하는 옵션이 없는 것 같습니다.)