내 주간 백업 스크립트는 다음과 같은 여러 bash 문으로 구성됩니다.
rsync -va /source_path/ /destination_path/
이제 이것은 훌륭하게 작동하지만 -v(verbose) 옵션은 내가 원하는 방식으로 정확히 작동하지 않습니다. 내가 원하는 것은 스캔하는 모든 폴더가 아니라 복사 중인 변경된 파일만 표시해야 한다는 것입니다.
예를 들어 document1
및 document2
폴더는 변경되지 않았지만 의 파일은 변경된 경우 document3
표시는 다음과 같습니다.
document1/
document2/
document3/
document3/foo.txt
해당 옵션을 완전히 생략 하면 -v
완전히 조용해지고 아무것도 표시되지 않습니다. 출력을 표시하고 싶지만 rsync
document1, document2 등과 같이 스캔된 수십 개의 폴더 가 아니라 복사되는 파일인 마지막 줄(foo.txt)에만 관심이 있습니다.
이를 수행할 수 있는 방법이 있습니까?
답변1
귀하의 설명은 이미 rsync
작동 방식을 보여줍니다. -v로 표시되는 유일한 파일은 전송 중이거나 변경되는 파일입니다. 따라서 실행될 때마다 디렉토리에 약간의 차이가 나타납니다.
이에 대한 일반적인 이유는 원본과 대상이 서로 다른 파일 시스템에 있고 소유권이나 권한을 정확하게 복사할 수 없으며 각 호출에서 복사를 시도하기 때문입니다.
이를 확인하려면 (또는 )을 rsync
사용하여 실행하세요 . 그러면 파일이 작업해야 하는 작업을 결정하는 내용을 보여주는 코드가 표시됩니다 . 소유권 또는 기타 정보인 경우(이 정보가 필요하지 않다고 판단한 경우) 또는 유사한 정보와의 동기화를 끌 수 있습니다 .-i
--itemize-changes
rsync
--no-owner