디렉토리 내용을 복사하지 않고 파일과 디렉토리를 복사하는 방법은 무엇입니까?

디렉토리 내용을 복사하지 않고 파일과 디렉토리를 복사하는 방법은 무엇입니까?

find일부 디렉터리를 선택하고 파일을 다른 위치에 복사하는 명령이 있습니다 ( --parents. 내가 원하는 것은 명령에 의해 출력된 디렉토리가 find내용 없이 복사된다는 것입니다(단, 소유권과 모드는 동일해야 합니다).

파일을 사용하거나 제한할 수 있지만 find필요에 따라 기본 소유권과 모드를 사용하여 디렉터리가 생성됩니다. 옵션을 사용하면 디렉토리가 올바른 소유권과 모드뿐만 아니라 모든 파일과 함께 복사됩니다. 기본적으로 목록의 디렉터리가 해당 내용이 아닌 디렉터리 메타데이터만 복사하기를 원합니다.-type f! -type d-rcp

이 목표를 달성하는 방법은 무엇입니까?

답변1

내 생각에 가장 간단한 도구는 입니다 . 디렉터리가 주어졌을 때 반복하지 않는다는 옵션이 pax있기 때문입니다 .-d

따라서 디렉터리만 복사하려면 디렉터리가 복사되었는지 확인할 수 있도록 단계별로 수행하세요. 파일을 복사하지 마세요. 다음 작업도 수행할 수 있습니다.

find somewhere -type d | pax -wd  > archive.tar
tar vtf archive.tar
( cd somewhere_else && tar xpf - ) < archive.tar

만족스러우면 아카이브 내용의 중간 인쇄(tar vxf archive.tar)를 제거하고 중간 archive.tar 파일을 파이프로 바꿀 수 있습니다.

답변2

GNU가 있다면 find아마도 다음과 같을 것입니다.

find path/to/dir -type d -printf '%P\0' | 
  rsync -0av --files-from=- path/to/dir/ path/to/newdir/

당신이 원하는 것을 할 것입니다 ( -0av로 대체하여 테스트하십시오 -0avn).

rsync검색 기준에 따라 전체 디렉터리 구조를 복사하는 등 적합한 필터를 개별적으로 사용할 수 있습니다.

rsync -avn -f'+ */' -f'- *' path/to/dir/ path/to/newdir/

예시 보기Linux: rsync는 디렉터리 구조 트리만 복사합니다.

관련 정보