
두 개의 디렉터리가 있고 dirOrig
다른 dirDest
원격 서버에 있습니다. 둘 다 다양한 깊이에 수많은 하위 디렉터리를 가지고 있습니다. 이제 특정 파일이나 확장자를 복사해야 합니다. 즉, from 에서 file1.txt
로 재귀적으로 복사해야 합니다 . 하지만 하위 디렉터리가 이미 에 있는 경우에만 파일을 복사해야 합니다 .dirOrig
dirDest
dirDest
예를 들어, rsync를 사용하여 소스에서 대상으로 특정 파일만 체계적으로 복사할 수 있습니다.
rsync -zarv --prune-empty-dirs --include "*/" --include="file1.txt" --exclude="*" "dirOrig" "dirDest"
dirDest
하지만 이 복사본을 대상( ) 에 있는 하위 디렉터리로만 제한하는 방법
답변1
나는 단일 명령을 모르지만 내가 생각해 낸 해킹은 다음과 같습니다.
에서 로
rsync
복사하는 데 사용합니다 .dirOrig
server1
server2
rsync -zarv --prune-empty-dirs --include "*/" \ --include="file1.txt" --exclude="*" "server1:dirOrig" \ "server2:dirOrig"
사용
dirOrig
시 존재하지 않는 복사본의 하위 디렉터리를 삭제합니다.dirDest
comm
comm -23 <( cd server2:dirOrig && find -mindepth 1 -type d | sort ) \ <( cd server2:dirDest && find -mindepth 1 -type d | sort ) \ | ( cd server2:dirOrig && xargs rm -rf )
dirDest
마지막으로 체크섬을 기반 으로 rsyncdirOrig
하고 dirDest에 없는 dirOrig의 모든 파일을 삭제합니다.file1.txt
rsync -acv --exclude=file1.txt --delete \ server2:dirDest server2:dirOrig