한 디렉터리에서 다른 디렉터리로 콘텐츠를 복사할 때 특정 폴더 제외

한 디렉터리에서 다른 디렉터리로 콘텐츠를 복사할 때 특정 폴더 제외

aim-db-dir폴더의 일부 코드 내용을 다른 폴더로 복사해야 합니다 aim-db-dir_nosvn. aim-db-dir모든 디렉터리(및 하위 디렉터리)에는 .svn 폴더가 포함되어 있으며 이러한 .svn 폴더에는 내가 신경 쓰지 않는 일부 폴더와 파일이 포함되어 있습니다. aim-db-dir.svn 폴더와 그 내용을 제외한 디렉터리와 하위 디렉터리의 모든 내용을 복사하고 싶습니다 .

그래서 제 질문은 어떻게 해야 하느냐는 것입니다. 읽었 rsync지만 디렉터리 및 파일 패턴을 제외할 수 있는지 잘 모르겠습니다. 또한 find 및 cp를 사용해 보았지만 뭔가 빠졌습니다.

내가 시도하는 명령은 다음과 같습니다. (작동하지 않음) -

find aim-db-dir/* -not -name ".svn" | sed -n 's|^aim-db-dir/||p' -exec cp -R "{}" "aim-db-dir_nosvn/{}" \;

저도 써볼까 생각은 해봤는데 xargs한번도 써본적이 없고 써먹을 수 있을지 모르겠네요. 다양한 솔루션을 높이 평가합니다!

답변1

findGNU 및 GNU 사용 cpio:

find /path/to/aim-db-dir -name .svn -prune -o -print0 | cpio -padmv0 /path/to/aim-db-dir_nosvn

그리고 rsync:

rsync -av -exclude=.svn /path/to/aim-db-dir/ /path/to/aim-db-dir_nosvn

후행 슬래시가 중요합니다. 슬래시가 없으면 /path/to/aim-db-dir/in이라는 디렉터리가 생성됩니다.aim-db-diraim-db-dir_nosvn

GNU 사용 tar:

tar cpf - --exclude-vcs -C /path/to/aim-db-dir . | tar xvpf - -C /path/to/aim-db-dir_nosvn

tar기본 PAX 형식의 제한으로 인해 복사에 사용할 수 있는 파일 경로의 최대 길이에 제한이 있습니다.

관련 정보