rsync
잠재적으로 전송될 수 있는 파일 수가 많은 파일 의 경우 전송된 내용만 포함하는 "깨끗한" 로그가 있다는 의미입니다.
나는 다음과 stdout
같은 이유로 함께 일합니다:
- 로그 출력을 구성하는 방법을 모르겠습니다(가능한 경우).
- 나는 또한 그것으로 작업하고 싶습니다
--dry-run
(이로 인해 다음과 같은 작업을 해야 합니다).이것, 부터). - 내 말은 최소한 Linux-Linux와 Linux-msys2(또는 그 반대)를 전송하는 데 유용한 스크립트를 작성한다는 것입니다. 여기서 권한(
-p
), 소유자(-o
) 및 그룹(-g
)에 대한 옵션은 상황을 복잡하게 만들 수 있습니다.
나는 명령을 결합했다
rsync --recursive --perms --group --owner --times --one-file-system --sparse --stats --progress --update --out-format='%t %p %i %n %M %l' --delete --dry-run --include="*" --exclude="*" --log-file=rsync.log ./ ../trg
그리고
... | grep -E -v ' \.[fdLDS][\.c][\.s][\.t][\.p][\.o][\.g][\.u][\.a][\.x]'
설명한대로여기. 첫 번째 포인트는 업데이트되지 않은 모든 항목과 일치합니다. 두 번째 문자는 모든 항목 유형과 일치합니다. 나머지 문자는 속성(변경/변경 안함) 플래그의 조건과 일치하여 -v
일치를 재개합니다. 이는 업데이트되는 프로젝트와 일치할 수 있으며 그 이상은 아닙니다. 업데이트되지 않았지만 타임스탬프가 변경된 항목은 일치하지 않습니다.
tee
나는 그것을 다음과 같은 것과 결합했습니다.
rsync --recursive --perms --group --owner --times --one-file-system --sparse --stats --progress --update --out-format='%t %p %i %n %M %l' --delete --dry-run --include="*" --exclude="*" --log-file=rsync.log ./ ../trg | grep -E -v ' \.[fdLDS][\.c][\.s][\.t][\.p][\.o][\.g][\.u][\.a][\.x]' | tee rsync.2.log
rsync
로그 파일 rsync.log
과 "사용자 정의" 로그 파일을 생성합니다 rsync.2.log
.
작동하는 것처럼 보이지만 내 접근 방식에는 다음과 같은 3가지 "약점"이 있습니다.
- 이 접근 방식이 실패할 수 있는 상황이 있는지 확실하지 않습니다("너무 많은" 보고서 또는 필터링된 파일을 통해).
rsync
이 문제를 로컬에서 직접 처리 하고 싶습니다 . 더 나은 방법은rsync
무차별 대입 방법을 사용하는 대신 로그 파일에서 출력(출력뿐만 아니라)을 얻는 것입니다grep
. 예를 들어--itemize-changes
표준 출력의 상태가 있는 일부 파일을 가져오려면 I를 사용하여.f...p.....
필터링해야 합니다(업데이트되지 않고 첫 번째 문자가 점이므로).- 사용 중
grep
부분적인 진행 상황을 볼 수 없습니다. 이것이 매우 큰 출력에 큰 문제가 될지는 잘 모르겠습니다.
관련된:
- rsync 로그 삭제 파일을 만드는 방법
- rsync에서 스캔된 모든 폴더가 아닌 복사 중인 파일만 표시하도록 하려면 어떻게 해야 합니까?
- rsync를 사용하여 로그 파일만 전송됨
- https://superuser.com/questions/1002074/linux-command-line-to-create-a-log-file-for-rsync
- https://serverfault.com/questions/401210/rsync-report-only-uploaded-files
노트: 이 질문의 미묘함(답변 참조)은 게시/링크된 다른 유사한 질문과 약간 다릅니다. 이것이 별도의 질문이어야 하는지 여부는 모호하고 주관적입니다. 저는 개인적으로 현재 상태를 유지하는 것이 유용하다고 생각합니다.
답변1
3가지 요청이 있습니다:
- 로그 출력을 구성합니다. 이렇게 하려면
--itemize-changes
내가 게시한 링크와 @roaima가 추가한 다른 링크에 표시된 것처럼 훌륭하게 작동합니다. - 작업
--dry-run
. 이를 위해--itemize-changes
비록 로그 파일이 아닌 표준 출력에서만 예상되는 출력을 생성하는 것이 여전히 유용합니다. 선택의 여지가없는 것 같습니다. - 다양한 운영 체제 조합(src/trg)을 사용합니다. 최소한 Linux-Linux 및 Linux-msys2(또는 그 반대). Msys2의 경우 NTFS이므로 권한이 ext4의 권한과 일치할 수 없습니다. 따라서 이미
rsync
편집된 파일이 계속 표시되므로 목록이 매우 길어집니다. 이런 경우에는--perms
제거해야 합니다. 이는 읽기 전용 <-> 읽기-쓰기 권한 변경도 복제하지 않습니다. 지금까지 모든 경우에 대한 완벽한 솔루션은 없습니다. 그 외에는--itemize-changes
이 상황에서도 여전히 유용합니다.