rsync 오류 : "/ foo / bar"에서 시간을 설정하지 못했습니다 : 작업이 허용되지 않습니다


194

rsync에서 혼란스러운 오류가 발생하고 웹 검색 (및 모든 일반적인 chmod'ing)에서 찾은 초기 사항으로 해결되지 않습니다.

rsync: failed to set times on "/foo/bar": Operation not permitted (1)
rsync error: some files could not be transferred (code 23) 
  at /SourceCache/rsync/rsync-35.2/rsync/main.c(992) [sender=2.6.9]

그 오류에도 불구하고 작동하는 것 같지만 그것을 제거하는 것이 좋습니다.


아니, 내가 알 수있는 한 그냥 정상적인 디렉토리.
Dreeves

내 오류 코드는 22이지만 비슷한 문제가 발생했습니다. rsync :에 시간을 설정하지 못했습니다 ... 잘못된 인수 (22). 일부 확인 후 내 파일이 1956 년에 마지막으로 수정 된 날짜였습니다! 해결 방법 : 모든 파일을 터치하면 문제가 해결됩니다. :) "찾기 -print0 | xargs -0 터치"
KIAaze

크론 작업을 동일한 대상으로 설정하면이 오류가 표시됩니다. cron 작업 시간 (crontab)을 변경하면 문제를 해결하는 데 도움이됩니다. 내 경우에는 cron 작업도 설정 한 경우 수동 rysnc를 수행하는 경우에만이 오류가 발생합니다.
NelsonGon

답변:


286

경우 /foo/bar문제가 될 수있는 것을, NFS (또는 아마도 일부 FUSE 파일 시스템)에 있습니다.

어느 쪽이든, 명령 행에 -O/ --omit-dir-times를 추가하면 디렉토리에서 수정 시간을 설정하지 않아도됩니다.


8
재미있는 것은 ext3을 ext3에 동기화하고 있다는 것입니다. 두 OS 모두 Linux입니다. 전에이 스위치를 사용해 본 적이 없습니다. -O는 트릭을 사용했지만 그것을 사용하지 않아도되기를 바랍니다.
d -_- b

3
감사! 일부 VPS 호스트 (예 : xlshosting.nl)가이를 내부적으로 사용하므로 rsync에 문제가 발생할 수 있습니다.
Frederik

2
Linux ext4에서 Linux ext4로 재 동기화하는 동일한 문제가 있습니다 . 디렉토리가 아닌 symlinks 에 대해 "시간을 설정할 수 없습니다 : 작업이 허용되지 않습니다" . -O분명히 도움이되지 않습니다. 백업 파티션이 ext4 대신 ext3 일 때 이런 일이 발생하지 않았습니다.
Marius Gedminas

10
rsync -avc를 사용하고 있었고 -O를 추가해도 도움이되지 않았습니다. 그런 다음 -a는 -rlptgoD와 동일하며 -t를 포함하는 -t를 포함한다고 읽습니다. 그래서 나를 위해 수정은 -rlpgoDvc를 사용하는 것이 었습니다
dlink

3
@dlink --no-t묵시적 옵션을 제거하기 위해 추가 할 수 있습니다 .
Noam Nelke

86

원격 다윈 (OS X) 시스템에서 쓰기 프로세스가 / foo / bar를 소유하지 않았기 때문일 수 있습니다. 이 문제에 대한 해결책은 원격 사이트에 적절한 소유자를 설정하는 것입니다.

이 답변에 투표가되었으므로 누군가에게 유용하게 도움이되었으므로 더 명확하게 설명하겠습니다.

이것이 발생하는 이유는 rsync가 파일을 복사 할 때 임의의 수정 시간 (mtime)을 설정하려고하기 때문입니다.

이 darwin의 시스템 utime()기능을 수행하려면 쓰기 프로세스 유효 uid가 파일 uid 또는 수퍼 유저와 동일해야합니다 ( opengroup utime 's page 참조) . 확인 이 토론 참조로 rsync를 메일 링리스트에 있습니다.


10
Linux에서 동일 (필자의 경우 데비안 스퀴즈) ... 대상 디렉토리의 소유자가 아닌 경우 rsync는 "시간 설정 실패"오류 메시지를 표시합니다. (디렉토리에 대한 쓰기 권한이 충분하지 않습니다.)
ddekany

1
나는 같은 문제에 갇혔다. uid = user로 NTFS를 마운트 할 때까지.
gavenkoa

3
이 오류는 rsync 명령을 사용하여 로컬 Bash 스크립트에서 rsync를 통해 로그인하려는 사용자와 동일한 사용자에게 rsync 명령을 사용하여 영향을 주려는 디렉토리의 소유자를 변경했을 때 사라졌습니다. 다시 말해 : /remote/path/to/foo/bar이 명령을 사용하여 원격 서버에 쓰려고했습니다 . 다음 rsync -avzP --exclude '.DS_Store' /local/path/to/foo/bar/ user1@1.2.3.4:/remote/path/to/foo/bar 과 같이 user1소유자를 만들 때 사라지는 것과 동일한 오류 메시지가 나타납니다 /remoe/path/to/foo/bar.$ chown -R user1 /remote/path/to/foo/bar
racl101

1
예를 들어 스티커 비트를 사용하는 것과 같이 그룹의 다른 사용자와 파일을 공유하는 경우 소유자를 변경하는 것이 실제로 해결책이 아닙니다. 이 경고를 방지하기 위해 -t를 사용하지 않고 -O를 추가합니다.
R. van Twisk

1
사용자가 파일 / 디렉토리를 소유 한 그룹의 일부이거나 작동하지 않아야하는 경우 정교하게 답변을 확장 할 수 있습니까?
Elijah Lynn

4

@ racl101이 답변에 댓글을 달았으므로이 문제는 폴더 소유자 와 관련이있을 수 있습니다 . rsync 명령은 폴더 소유자와 동일한 사용자가 수행해야합니다. 동일하지 않은 경우 변경할 수 있습니다.

chown -R userCorrect /remote/path/to/foo/bar

2

필자의 경우 문제는 "수신기 마운트 포인트"가 잘못 마운트되었다는 것입니다. 읽기 전용 모드에있었습니다 (약간의 이유로). rsync가 파일을 복사하는 것처럼 보였지만 그렇지 않았습니다. fstab 파일을 확인하고 마운트 옵션을 기본값으로 변경하고 파일 시스템을 다시 마운트하고 rsync를 다시 실행했습니다. 그럼 괜찮아


2

나는 같은 문제가 있었다. 나에게 해결책은 원격 파일을 삭제하고 rsync다시 만들 수 있습니다.


0

시간을 제대로 처리하지 못하는 파일 시스템에 쓸 때이 문제를 보았습니다 .SMB 공유 또는 FAT 또는 다른 것으로 생각합니다.

대상 파일 시스템은 무엇입니까?


나는 리눅스 (슬라이스 호스트 시스템)와 rsync'ing하는 Mac에 있습니다.
Dreeves

아, 이상합니다 ... 맥에서 rsync를 사용하고 있기 때문에 경고해야합니다. 모든 OS X 파일 속성을 올바르게 보존하지 않으므로 나쁜 일이 발생할 수 있습니다. 예를 들면 다음과 같습니다. blog.plasticsfuture.org/2006/04/23/mac-backup-software-harmful
David Wolever

그러나 MacPorts ( sudo port install rsync) 에서 가장 최신 버전을 사용할 수 있으며 덜 손상됩니다. 이를 확인하려면 rsync --version: rsync 버전 3.0.5 프로토콜 버전 30 ... 추가, ACL, xattrs, iconv, symtimes, 파일 플래그 ... (ACL 및 xattrs가 중요합니다)
David Wolever

1
매킨토시의 rsync는 실제로 모든 파일 속성을 설정하고 꽤 오랫동안 설정했습니다. "나쁜 일이 발생할 수 있습니다"라는 URL은 2006 년 날짜입니다!
tgunr

2
답변에는 실제로 질문이 포함되어서는 안됩니다. 이것은 주석으로 더 적합합니다.
Brian

0

일부 파일에 대한 권한이 없을 수 있습니다. 관리자 계정에서 "sudo rsync -av"를 사용해보십시오. 또는 루트 계정을 활성화하고 루트로 로그인하십시오. 그러면 시스템을 완전히 호스 링하고 rsync를 무차별 대입 할 수 있습니다! ;-) 위에서 언급 한-확장-속성들이 도움이 될지 확신 할 수 없지만, 좋은 척도를 위해 그것을 던졌습니다.


0

이것은 파티션 유형 xfs (rw,relatime,seclabel,attr2,inode64,noquota)에서 나에게 일어 났으며 , 여기서 그룹의 다른 사용자가 소유 한 디렉토리는 우리 둘 다 구성원이었습니다. 그룹 멤버쉽은 로그인 전에 이미 설정되었으며 전체 디렉토리 구조는 그룹 쓰기가 가능했습니다. 내가 수동으로 실행했다 sudo chown -R otheruser.group directorysudo chmod -R g+rw directory 이를 확인 할 수 있습니다.

나는 왜 그것이 원래 작동하지 않았는지 모르지만 sudo chown -R myuser.group directory그것을 가지고 소유권을 얻는다. 아마도 SELinux 관련입니까?


매뉴얼 페이지에 앱의 UID가 표시됩니다. utime()작동 하려면 파일의 UID와 일치 해야합니다. 루트로 실행하여 수행 할 수도 있습니다. 그러나 파일의 UID가 다르면 "지금"이외의 다른 시간으로 시간을 변경할 수 없습니다.
Alexis Wilke

그러한 매뉴얼 페이지에 링크 할 수 있습니까? 내 언급이 없습니다 utime().
Sam Brightman

1
linux.die.net/man/2/utime 해당 단락 : "프로세스가 적절한 권한을 갖거나 유효 사용자 ID가 파일의 사용자 ID와 같거나 시간이 NULL이고 프로세스가 다음과 같은 경우 타임 스탬프 변경이 허용됩니다. 파일에 대한 쓰기 권한입니다. "
Alexis Wilke

0

최근에 수정 한 파일의 시간을 설정할 수 없기 때문에 소스 또는 대상에서 최근에 수정되지 않은 파일에 대해 rsync 프로세스를 실행하면이 오류가 팝업 될 수도 있습니다.

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