나는 rsync, Grsync 및 Unison을 테스트하면서 모든 곳에서 책을 읽는 데 많은 시간을 보냈습니다. 그러나 희망은 없습니다! 두 로컬 폴더 간에 파일을 복사/동기화하는 일반적인 rsync 방법은 "전체 폴더 자체를 복사하는 것입니다! - 가상의 내용이 아닙니다! - 다른 것은 없습니다!"
실험을 위해 동일한 루트 디렉터리에 서로 다른 이름을 가진 두 개의 폴더를 만들었습니다. 이 결과를 얻었을 때 나는 그것들을 분리하고 그것이 원인인 경우 소스에 동일한 대상 이름을 부여했습니다.
rsync -zrahvWnt --delete-after ~/Documents/test3/source-DRV ~/Documents/test3/dest-T
또한 Unison에서 가능한 모든 옵션을 사용했습니다. 희망이 없습니다! 결과는 같습니다!
"첫 번째 루트를 위해 충돌 해결" "오른쪽에서 왼쪽으로 전파" "오른쪽에서 왼쪽으로"
아무도 다르게 일하지 않습니다! 모든 결과는 동일합니다. "전체" 폴더를 다른 폴더 "내부"에 복사하세요!
내가 원하는 것은 기본적으로 간단합니다.
소스에서 누락된 파일이 있는지 대상을 확인합니다.
이동 - 더 좋지만 복사도 가능합니다.
원본 폴더에서 대상 폴더로만 파일이 누락됩니다.
두 폴더에 있는 동일한 크기와 날짜의 파일에 대해서는 아무 작업도 수행되지 않습니다.
이렇게 하면 "전체 폴더"(예: 대상)와 "쓸모 없는 폴더"(예: 소스)가 생성되며 문제 없이 수동으로 삭제할 수 있습니다.
[편집:] 솔루션을 구현하는 동안 "모의 실행"을 수행하는 -n 옵션을 사용하고 있음을 발견했습니다. 이는 아무것도 작동하지 않는 또 다른 이유일 수 있습니다. 제거했는데 모든 것이 예상대로 작동합니다!
답변1
귀하의 의도를 올바르게 이해했다면 첫 번째 매개변수 뒤에 슬래시를 추가하기만 하면 됩니다 rsync
. 즉, 글을 쓰는 대신
rsync -zrahvWt --remove-source-files ~/Documents/test3/source-DRV ~/Documents/test3/dest-T
쓰다
rsync -zrahvWt --remove-source-files ~/Documents/test3/source-DRV/ ~/Documents/test3/dest-T
편집하다 OP의 질문에 대한 응답으로 OP의 의견을 바탕으로 위 명령을 수정했습니다.
매개변수 정보 rsync
:
- -z: 전송 중 파일 데이터 압축
- -r: 재귀: 현재 폴더 아래의 파일뿐만 아니라 현재 폴더 아래의 폴더와 해당 파일을 복사합니다.
- -a: 거의 모든 것(날짜, 권한 등)을 유지합니다.
- -h: 사람이 읽을 수 있는 형식으로 숫자를 출력합니다.
- -v: verbose: 화면에 프로세스에 대한 자세한 내용을 인쇄합니다.
- -W: 차이점 데이터만 업데이트하는 것이 아니라 전체 파일을 복사합니다.
자세한 내용은 를 실행하여 확인할 수 있습니다
man 1 rsync
.