다른 원격 서버에 두 개의 디렉토리 dirOrig
가 있습니다 . dirDest
그들은 모두 다양한 깊이의 많은 하위 디렉터리를 가지고 있습니다. 이제 특정 파일이나 확장자를 에서 로 재귀적으로 복사 해야 file1.txt
합니다 . 그러나 이는 하위 디렉터리가 이미 .dirOrig
dirDest
dirDest
예를 들어, rsync를 사용하여 소스에서 대상으로 특정 파일만 체계적으로 복사할 수 있습니다.
rsync -zarv --prune-empty-dirs --include "*/" --include="file1.txt" --exclude="*" "dirOrig" "dirDest"
dirDest
하지만 어떻게 이 복사본을 target()에 존재하는 하위 디렉터리 로만 제한할 수 있습니까?
답변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 )
마지막으로 체크섬을 기반으로 rsync를 수행하고 dirDest에 존재하지 않는 dirOrig의 모든 파일을 삭제합니다
dirDest
.dirOrig
file1.txt
rsync -acv --exclude=file1.txt --delete \ server2:dirDest server2:dirOrig