src 디렉토리를 템플릿으로 복사하고 싶습니다. 즉, 동일한 구조를 유지하고 싶습니다. 이 템플릿 디렉터리의 파일은 src 디렉터리를 기호 링크로 가리켜야 합니다. rsync가 기본적으로 작동하는지 잘 모르겠습니다.
답변1
Rsync는 심볼릭 링크가 아닌 복사 또는 (때때로) 하드 링크만 수행할 수 있습니다. GNU coreutils의 프로그램은 cp
적어도 파일 이름 기반 필터링과 같은 멋진 rsync 옵션이 필요하지 않은 경우 원하는 것을 수행할 수 있습니다. -s
플래그와 재귀를 사용하십시오 -a
.
cp -as source target
필터링이 필요한 경우 다음을 사용할 수 있습니다.다루기 힘든~의zmv
. 이 zmv
함수는 기본적으로 파일을 이동하지만 다른 작업을 지정할 수 있습니다 -S
(심볼릭 링크를 생성하지만 디렉토리를 복사하지 않으므로 사용 사례에 좋지 않습니다). 또는 -p
(임의의 프로그램을 지정합니다. 여기서는 함수를 사용하여 무엇이든 생성합니다. 필요한 디렉토리를 선택한 다음 심볼릭 링크를 만듭니다). 다음을 지정할 수 있습니다.무늬^*.dontcopy
복사할 파일을 제한합니다. 여기서는 확장자가 있는 파일을 무시 .dontcopy
하고 (m-7)
지난 7일 이내에 수정된 파일만 처리하고 ^/
처리할 파일 목록의 디렉터리를 무시하는 데 사용하고 있습니다 .
mkdir_ln () {
mkdir -p -- $2:t &&
ln -s -- $1:A $2
}
cd source
zmv -P mkdir_ln -Q '**/^*.dontcopy(m-7^/)' '../target/$f'
위에서 나는 사용하고 있습니다기록 수정자 (:A)
첫 번째 인수를 절대 경로로 변환합니다. 상대 심볼릭 링크를 생성하려면 ../
올바른 수의 구성 요소를 사용하여 올바른 대상 경로를 구축해야 합니다.
mkdir_ln () {
mkdir -p -- $2:t &&
ln -s -- ${1//[^/]##/..}/$1 $2
}