rsync 소유자, 그룹, 시간 및 권한 무시


67

폴더 재귀에 동기화하기 위해 rsync를 사용하는 방법을 알고 싶지만 새 파일이나 업데이트 된 파일 (소유자, 그룹 또는 타임 스탬프가 아닌 내용 만)을 업데이트해야하며 소스에 존재하지 않는 파일을 삭제하고 싶습니다 .

답변:


93

난 당신이 사용할 수 있다고 생각 -no-하는 옵션을 rsync할 수 없습니다 당신이 동기화 중있는 파일의 소유권 또는 권한을 복사합니다.

rsync 맨 페이지에서 발췌

--no-OPTION
       You may turn off one or more implied options by prefixing the option 
       name with "no-".  Not all options may be pre‐fixed  with  a  "no-":  
       only options that are implied by other options (e.g. --no-D, 
       --no-perms) or have different defaults in various circumstances (e.g. 
       --no-whole-file, --no-blocking-io, --no-dirs).  You may specify 
       either the short or the long option name after the "no-" prefix (e.g. 
       --no-R is the same as --no-relative).

       For example: if you want to use -a (--archive) but don’t want -o 
       (--owner), instead of converting -a into -rlptgD, you could specify 
       -a --no-o (or -a --no-owner).

       The order of the options is important:  if you specify --no-r -a, the 
       -r option would end up being turned on,  the opposite  of  -a  
       --no-r.   Note  also  that the side-effects of the --files-from 
       option are NOT positional, as it affects the default state of several 
       options and slightly changes the meaning of -a (see the  --files-from
       option for more details).

소유권 및 권한

매뉴얼 페이지를 살펴보면 다음과 같은 것을 사용하고 싶다고 생각합니다.

$ rsync -avz --no-perms --no-owner --no-group ...

존재하지 않는 파일을 삭제하려면 --delete스위치를 사용하십시오 .

$ rsync -avz --no-perms --no-owner --no-group --delete ....

타임 스탬프

타임 스탬프에 관해서는 SOURCE와 DEST 파일의 비교 방법을 변경하지 않고 이것을 유지할 수있는 방법을 찾지 못했습니다. rsync이 스위치를 사용하여 타임 스탬프를 무시 하도록 지시 할 수 있습니다 .

-I, --ignore-times
       Normally  rsync will skip any files that are already the same size 
       and have the same modification timestamp.  This option turns off this 
       "quick check" behavior, causing all files to be updated.

최신 정보

타임 스탬프의 경우 --no-times원하는 것을 수행 할 수 있습니다.


--no-times를 사용할 때 여전히 파일 >f..T...플래그 및 수정 시간이 대상에서 설정되고 있음을 나타내는 사용하여 표시된 많은 파일 (항목 별 변경 사항 이 있음 )이 표시됩니다. 이는 피하려고합니다.
Michael

17

-a 옵션 을 피하는 것이 더 쉽다고 생각합니다

$ -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

원하는 옵션 만 설정하십시오.

모든 옵션을 좋아하지만 user -o , group -g , time -t 및 permissions -p 의 수정은 좋아하지 않으므로 아카이브에서 해당 4 가지 옵션을 뺄 수 있습니다.

$ -rlD

대상에서 파일을 삭제하려면 --delete 옵션을 사용하십시오 .

귀하의 질문에 :하지만 모든 파일을 검사 할 것이라고 생각합니다 .rsync는 내용으로 만 변경된 파일 만 전송 / 검사 할 수 없습니다.


-l링크, -D기기 (와 동일하게 취급 됨 --specials)를위한 것 -r입니다. 콘텐츠를 이야기 하는 것만으로는 충분 하다고 생각 합니다.
sdkks

7

나는 당신이 찾고있는 것이 옵션이라고 생각합니다.

rsync -r --size-only

매뉴얼 페이지에서 :

--size-only
   This  modifies  rsync’s  "quick  check"  algorithm  for finding files that need to be transferred,
   changing it from the default of transferring files  with  either  a  changed  size  or  a  changed
   last-modified  time  to  just  looking  for  files that have changed in size.  This is useful when
   starting to use rsync after using another mirroring  system  which  may  not  preserve  timestamps
   exactly.

소스 디렉토리에서 누락 된 파일을 정말로 삭제하려면 --delete


4

rsync가 파일 모드 시간 및 크기를 기준으로 검사를 무시하고 "-c"스위치와 함께 chksum 기반 접근 방식을 사용하도록 강제 할 수 있습니다.

-c, --checksum              skip based on checksum, not mod-time & size

즉, 파일 시간과 크기가 일치하는지 여부에 관계없이 전체 파일을 덩어리로 비교하고 소스 및 대상간에 관련 메타 데이터를 앞뒤로 전송해야하지만 서로 다른 덩어리 만 전송해야합니다. 소스와 대상 사이.

다른 사람이 제안한 다른 스위치와 함께이 스위치를 사용하면 복사 된 항목 (변경된 것만 복사)을 제한해야하며 소스와 대상간에 일관성 검사를 수행하는 이점이 있지만 링크 속도에 따라 시간이 더 오래 걸립니다. 파일 청크를 양쪽에 chksum하고 비교해야합니다).


나는 그것이 OP가 염두에두고 있었던 것을 의심합니다. 문제는 파일이 선택된 방식과 관련이없는 것으로 보였지만 속성이 복사되었으며 선택한 (대부분도 공표 된) 답변이 이미이를 다루고 있습니다.
Julie Pelletier

-3

아래 명령은 완벽하게 작동하며 내 요구 사항에 맞게 테스트했으며 내용 변경 만 필요합니다.

rsync -acvzh source/ destination/
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.