2013-07-29 3 views
0

나는 (SuSE LINUX에서) scp를 수행하고 내가 예상하지 못한 것을 보려고합니다. 대상 호스트에서 /var/home/dirx/BACKUPS/mydir있는 경우scp 명령의 동작

scp -q -r /home/dir1/mydir host:/var/home/dirx/BACKUPS 

, 나는 (수정 시간 포함) 그 디렉토리 아래에있는 기존의 디렉토리가 그대로 남아있는 것을 알 수있다. 새 디렉토리 만 작성됩니다.

원본 디렉터리에 존재하지 않는 파일이 대상 디렉터리에 있으면 보존됩니다.

복사 한 후 대상 디렉터리가 원본 디렉터리의 정확한 복사본으로 표시 될 것으로 예상했습니다. 더 많은 병합처럼 보입니다.

scp가 작동하는 방법은 무엇입니까?

+1

scp가 아닌 rsync를 찾고있는 것 같습니다. (rsync는 SSH에서도 작동 할 수 있습니다.) –

+0

특히, --delete 옵션을보십시오. – Craig

+0

저를 보겠습니다. 감사합니다 – rpat

답변

2

거의 모든 시스템에서 복사 명령의 표준 동작입니다. 두 위치에 모두 존재하는 파일은 대상이 원본 복사본으로 새로 고쳐지게합니다. 대상에 존재하지 않는 파일은 원본에서 작성/복사됩니다.

"stale"파일을 삭제하는 copy/cp 작업이 아니기 때문에 대상에만 존재하는 파일은 영향을받지 않습니다. 오래된 파일이 무엇인지 알 수있는 방법이 없습니다.

대상에서 오래된/쓸모없는 파일을 제거하려면 다른 도구가 필요합니다.

+0

그리고 "다른 도구"는 rsync입니다. –

0

다른 도구는 tar와 결합 된 ssh입니다. 대상 디렉토리를 완전히 스크랩하고 다시 작성하려면 트릭을 수행하십시오.

(cd /home/dir1/mydir && tar cf - .) | ssh host "cd /var/home/dirx && rm -rf BACKUPS && mkdir BACKUPS && cd BACKUPS && tar xvf -"