rsync-업로드 된 파일 만보고


14

rsync에 문제가 있습니다 : rsyncing하는 디렉토리의 모든 파일을 표시하거나 (플래그를 사용하는 -v경우) 전혀 사용하지 않는 경우 (을 사용하지 않는 경우 -v).

실제로 파 엔드에 업로드 해야하는 파일을 제외하고 rsync를 조용히 하고 싶습니다 . 이런 종류의보고를 활성화하는 플래그가 있습니까? 설명서에서 이것을 찾을 수 없습니다

답변:


11

예, -i깃발을 확인하십시오 . 암호화 된 형식으로 모든 작업에 대한 보고서를 제공합니다. 형식의 정확한 정의는 매뉴얼 페이지를 참조하십시오.

원격 호스트로 전송되는 파일 목록을 얻으려면 다음을 사용할 수 있습니다.

rsync <options> -i <src> <dst> | grep '^<' | awk '{ print $2 }'

1
변경된 파일이 아닌 모든 파일을 다시보고합니다.
dangonfast

@gonvaled 아니요, 원격 호스트로 전송되는 파일 만 출력됩니다 ( <fcstpoguax filename여기서 다른 플래그는 업데이트해야하는 이유를 보여줍니다). 모든 파일을보고하면 테스트 또는 환경에 문제가있을 수 있습니다.
Oliver

그 쪽이 맞는 거 같아요. 맨 페이지를 살펴 보았으며 설명대로 설명되어 있습니다. 그러나 내 시스템은 모든 파일을보고합니다. 아마 끝이 잘못되었을 수도 있습니다 ...
dangonfast

음 점점 가까워짐 :보고 문자열은 (모든 파일) <f..T......입니다. 맨 페이지에 따르면 타임 스탬프와 관련이 있습니다.
dangonfast

1
를 사용 grep -E '^[^.]|^$'하면 통계 (또는 경고, 오류 등)를 통해 점으로 시작하여 점으로 시작하는 정말 지루한 선만 제거 할 수 있습니다.
Frank Nocke

9

하나의 rsync는 -v실제로 전송 된 파일 만 인쇄합니다. 매번 전체 목록을 얻는다면 수정 시간 + 크기를 기반으로하는 기본 rsync src / dest 비교 알고리즘이 귀하의 경우에 적합하지 않음을 의미합니다. 체크섬으로 rsync 비교 파일을 만드는 -c( --checksum) 플래그를 추가 할 수 있습니다 . 이것은 분명히 약간의 I / O 오버 헤드를 초래한다는 점에 유의하십시오.

약간 관련이 있지만 --info=flist대신 대신 사용 -v하면 파일의 트림 된 출력을 얻습니다 (기본적으로 일반적인 -v출력 의 머리글과 바닥 글을 건너 뜁니다 ).


1
--info=flistrsync> = 3.1에서만 사용할 수 있으며 모든 곳에서 사용할 수는 없습니다. 예를 들어 macOS는 Rsync v3이 GPL 3 이하이기 때문에 고대 버전 2.6.9와 함께 제공됩니다.
chiborg

1
Apple GPL 소문은 매우 기쁘지만 Enterprise Linux는 지원되는 릴리스 수명 동안 인증을 유지하고 호환성 (api + abi)을 보장하기 위해 버전이 잠겨 있고 분기되는 대규모 지원 범위 (14 년)를 가지고 있음을 기억하십시오. . 실제로 가능한 유일한 방법이며, 부작용은 버전 번호가 오래되고 새 기능이 오랜 시간 동안 엔터프라이즈에 영향을 미치지 않는다는 것입니다.
user2066657

2

내 마음에 오는 한 가지 더 자세한 로그 형식을 사용하고 원하는 것을 awk'ing입니다.

예 :

rsync -a --out-format="%b  %i %f" /etc/ /tmp/qq/ |awk '{if ($1>0) {print $3}}'

이것은 매우 강력하지 않으며 공백이있는 파일 이름을 잘 처리하지 못합니다.


1

1. -i옵션을 사용하십시오

이러한 아이콘 화 된 (또는 암호화 된) 변경 플래그의 경우. 다음과 같이 출력됩니다.

*deleting   DSC00012 (copy).JPG
.d..tp..... ./
.f...p..... DSC00011.JPG
>f+++++++++ DSC00012 (copy2).JPG
>f.stp..... DSC00012.JPG
.f...p..... DSC00014.JPG

Number of files: 5 (reg: 4, dir: 1)
Number of created files: 1 (reg: 1)
... more statistic stuff
sent 636.01K bytes  received 4.63K bytes  1.28M bytes/sec
total size is 2.84M  speedup is 4.44

2. 점으로 시작하는 모든 줄을 그 리핑하십시오.

다른 모든 행 (가독성을 위해 빈 행도)을 전달하십시오.

rsync -arz -i --stats -h ... /mnt/FooDrive/ /mnt/backup  | grep -E '^[^.]|^$'

그리고 여기에 우리는 :-) — 의사가 주문한 것 :

*deleting   DSC00012 (copy2).JPG
>f.stp..... DSC00011.JPG
>f+++++++++ DSC00012 (copy).JPG

Number of files: 5 (reg: 4, dir: 1)
Number of created files: 1 (reg: 1)
...

사냥 보다는 점을 피> 하면 통계뿐만 아니라 잠재적 인 오류, 경고 등을 통과시키는 이점이 있습니다 ...

마지막에 통계를 갖는 것이 개인적인 취향입니다. -h --stats마음에 들지 않으면 사용하지 마십시오 . 나는 당신의 주요 관심사가 수백 또는 수천 개의 변경되지 않은 파일을 스크롤하는 것을 보지 못한다고 가정합니다 ...


0

나는 이것을 할 깃발이 없다고 생각하지만 지금있을 수 있습니다. 내가 한 방식은 다음과 같습니다.

rsync -vv [other options] | grep -v 'uptodate'

1
내 rsync (버전 3.0.7) uptodate가보고에 추가되지 않으므로 이를 필터링 할 수 없습니다.
dangonfast

Mike가 위에 게시 한 내용과 @ jeckyll2hide가 지적한 내용을 수정하거나 적어도 명확히하고 싶습니다. 문제는 rsync -v가 더 이상 문자열 "uptodate"를 내 보내지 않고 rsync -vv를 사용해야한다는 것입니다. 두 가지 vs. 방금 rsync 버전 3.1.0의 Ubuntu 14.04에서 작동하는지 확인했습니다. 마이크, 이것을 반영하여 게시물을 업데이트 할 수 있습니까?
John Mark Mitchell
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.