rsync는 소유자, 그룹, 시간 및 권한을 무시합니다.

rsync는 소유자, 그룹, 시간 및 권한을 무시합니다.

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

답변1

-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 ....

타임스탬프

타임스탬프의 경우 소스 파일을 대상 파일과 비교하는 방식을 변경하지 않고 이를 보존할 수 있는 방법이 없습니다. 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원하는 작업을 수행할 수 있습니다.

답변2

피하는 게 더 쉬운 것 같아요-ㅏ옵션

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

그리고 원하는 옵션만 설정하세요.

모든 옵션이 마음에 들지만 사용자 수정이 마음에 들지 않는 경우-영형, 그룹-G, 시간-티및 권한-피따라서 해당 아카이브에서 이 네 가지 옵션을 뺄 수 있습니다.

$ -rlD

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

귀하의 질문에: 하지만 모든 파일이 검사된 것 같습니다. rsync는 내용에 의해서만 변경된 파일만 전송/검사할 수 없습니다.

답변3

내 생각엔 당신이 찾고 있는 것이 옵션인 것 같아요

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 -rv --size-only /mnt/from/ /mnt/to/

내 목표는 진행 상황을 확인하고 초기 파일 검사를 더 빠르게 해주는 webdav 설치입니다.

내 사용 사례에 해당 옵션을 찾고 있지 않으므로 대상에서 제거되지 않습니다.

관련 정보