나는 다음 명령을 사용하여 수정 시간과 같은 파일 메타데이터를 보존( )하면서 중첩 폴더를 cp
재귀적으로( ) 복사하는 방법을 알고 있습니다 .-r
-p
cp -pr "/path/from" "path/to"
이름별로 첫 번째 수준 깊이에 중첩된 특정 폴더를 생략하는 방법이 있습니까?
예를 들어, Photos
이름이 지정된 폴더가 복사되고 있습니다. 중첩된 폴더를 건너뛰고 싶습니다 Dogs
. /Photos/Dogs
폴더와 그 내용을 제외한 모든 것을 원합니다 .
복사한 다음 삭제할 수 있다고 생각했습니다. 그러나 이것은 비효율적이다. 애초에 폴더 복사를 방지할 수 있는 방법이 있나요?
저는 현재 macOS Mojave를 사용하고 있으며 나중에 FreeBSD 12를 사용할 예정입니다.
답변1
예, 하나 이상의 하위 디렉터리를 복사하지 않고도 파일 구조를 상당히 쉽게 복사할 수 있지만 cp
.
통과하면 rsync
제외 패턴을 사용하여 파일 및/또는 디렉터리를 제외할 수 있습니다. 귀하의 경우에는 다음을 사용하고 싶은 것 같습니다.
rsync -av --exclude='Photos/Dogs/' /path/from/ path/to
이렇게 하면 경로가 일치하는 디렉터리를 호출 하지 않고 의 path/to
정확한 복사본이 만들어집니다 . 소스 디렉터리의 후행을 제거하면 소스 폴더의 정확한 복사본을 얻게 됩니다./path/from
Dogs
Photos/Dogs
/
path/to/from
사용된 제외 패턴은 및 와 같이 이름이 지정된 디렉터리 내에 있는 rsync
이름이 지정된 모든 하위 디렉터리를 무시합니다. using은 상위 디렉터리가 무엇인지에 관계없이 호출된 모든 하위 디렉터리를 제외하고, using은 파일 형식에 관계없이 호출된 모든 항목을 제외합니다. 디렉터리만 일치Dogs
Photos
/path/from/Photos/Dogs
/path/from/holidays/2013/Photos/Dogs
--exclude=Dogs/
Dogs
--exclude=Dogs
Dogs
Photos/Dogs
곧장다음 /path/from
으로 --exclude='/Photos/Dogs/'
.
rsync
시스템 매뉴얼의 "패턴 규칙 포함/제외" 섹션을 참조하세요.
-a
( ) 옵션을 사용 --archive
하면 타임스탬프, 권한 등도 복사되고 재귀 복사도 활성화됩니다. -v
( ) 옵션을 선택하면 --verbose
세부적인 작업이 가능합니다.
이름 사이의 하드 링크를 유지하려면 -H
( )를 추가하십시오(매뉴얼을 다시 참조하십시오).--hard-links
rsync