Windows에서 rsync 파일 권한


32

원격 시스템의 파일을 네트워크 드라이브에 놓는 시스템으로 파일을 동기화하는 rsync 서비스가 있습니다.

대상 폴더의 기본 권한을 사용하려면 복사 된 파일이 필요합니다.

동기화 프로세스는 제대로 실행되지만 완료된 후 일부 폴더 (권한이 거부 됨)에 액세스 할 수 없습니다.

도메인 관리자로 로그인했습니다. 또한 해당 폴더에 대한 권한을 수정할 수 없습니다. 무엇을 제공합니까?

명령을 실행 :

rsync.exe  -v -rlt -z --delete "src_path" "dst_path"

현재 어떤 명령을 사용하여 동기화하고 있습니까?
John T

답변:


24

( http://www.samba.org/ftp/rsync/rsync.html에서 )

요약 : 대상 파일 (이전 파일과 새 파일 모두)에 소스 권한을 부여하려면을 사용하십시오 --perms.

새 파일에 대상 기본 권한을 부여하려면 (기존 파일은 변경하지 말고) --perms옵션이 꺼져 있는지 확인 하고 사용하십시오 --chmod=ugo=rwX(마스킹되지 않은 모든 비트가 활성화 됨).

후자의 동작을보다 쉽게 ​​입력 할 수있게하려면 ~ / .popt 파일에이 줄을 넣는 것과 같이 popt 별칭을 정의 할 수 있습니다 (다음은 -Z 옵션을 정의하고 --no- 포함) 대상 디렉토리의 기본 그룹을 사용하려면 g) :

    rsync alias -Z --no-p --no-g --chmod=ugo=rwX

정말 고마워. 사용할 올바른 플래그를 기억하지 못했습니다 ...
Vokuhila-Oliba

2
이것은 Linux의 rsync와 관련이 있지만 원래 게시물이 요구하는 Windows 드라이브에 rsync를 할 때 항상 문제를 해결하는 것은 아닙니다.
Simon East

18

Cygwin의 "posix"보안으로 인해 --no-permsrsync와 함께 사용하더라도 Windows NTFS 파일 권한에 많은 문제가 발생했습니다 .

새로 만든 파일 / 폴더가 기본 권한을 제대로 상속받지 못했지만 모든 파일 / 폴더는 <not inherited>Windows 파일 / 폴더 고급 보안 탭에 많은 항목으로 끝납니다 . (그리고이 문제는 단지 rsync 관련이 아닙니다).

나는이 발견 관련 포스트링크 사용하여 이러한 문제를 해결하는 방법에 모두 매우 도움이 noaclCygwin에서의에서 옵션 /etc/fstab파일을. 이 솔루션의 단점은 cygwin이 파일 / 폴더 권한을 설정하는 기능을 잃어 버리지 만 많은 경우에 중요하지 않다는 것입니다.

(이 주제를 검색하면 CYGWIN = NONTSEC 환경 변수 설정에 대한 참조가 있지만 cygwin v1.5 용이며 cygwin v1.7 이상에서는 작동하지 않습니다.)


/ etc / fstab 파일을 편집하면 문제가 해결되었습니다. 이를 위해 DeltaCopy와 같은 다른 배포 대신 cygwin 내에서 rsync를 사용해야했습니다.
Matt Connolly

cygwin이 아닌 cwrsync 패키지를 사용하는 경우 fstab 파일을 어디에 배치합니까?
Simon East

나는 cygwin을 사용하지 않습니다. OS X에 마운트 된 일반 NTFS 드라이브와 rsync 파일을 가져옵니다. 그런 다음 Windows 내의 이러한 파일은 사용 권한을 완전히 망쳤습니다. 해결책을 찾고 있습니다.
Steven Lu

내장 드라이버를 사용하여 macOS에서 NTFS를 마운트하는 "위험한"방법을 사용하고있는 것 같습니다. 이는 paragon / tuxera 및 FUSE 드라이버보다 안정성이 훨씬 낮습니다. 같은 보트에 있다면 명심하십시오
Steven Lu

8

DeltaCopy를 사용하는 Windows에서는 다음 과 같이 작동시킬 수 있습니다.

rsync --perms --chmod=a=rw,Da+x ...

그것은 심지어 일했다 --recursive


이것은 주로 효과가 있었지만 배치 파일 등이 제대로 실행되도록 --chmod 옵션을 a = rwx를 포함하도록 변경해야했습니다.
Taylor Gerring

1
이것은 나를 위해 일한 유일한 옵션입니다. 위에서 제안한 --no-perms와 fstab을 사용해 보았습니다. 이것은 하나의 <상속되지 않은> 권한만을 주었고, 이것은 내가 원했던 일종의 권한이며 실행중인 사용자에 대한 거부 권한을 포함하지 않았습니다. 감사!
AronVanAmmers

DeltaCopy에는 나중에 권한을 수정할 수있는 chmod 실행 파일도 포함되어 있습니다. 예 : chmod -R 777 / cygdrive / g
jnnnnn

1
--perms는 사본을 읽기 전용 문제로 해결하기 위해 누락되었습니다.
Tyler S. Loeper

1

적어도 Cygwin에서 rsync에는 다음 스위치가 있습니다.

-A, --acls는 ACL을 보존합니다 (--perms 포함).

내 Cygwin 버전은 다음과 같습니다

CYGWIN_NT-6.3 1.7.29 (0.272 / 5 / 3) 2014-04-07 13:46 x86_64 Cygwin

이것이 도움이되기를 바랍니다!


1
슈퍼 유저에 오신 것을 환영합니다! 이것이 이론적으로 질문에 대답 할 수 있지만, 개선을 위해 이것이 질문 에 어떻게 대답 하는지에 대한 세부 사항을 포함하는 것이 바람직 할 것입니다 (귀하의 주장을 뒷받침하는 출처를 인용하는 것은 플러스입니다).
G-Man, 'Reinstate Monica'라고

1

최고 평점 답변은 ssh를 통해 rsync를 창으로 사용하는 경우에만 작동합니다. cygwin rsync 데몬을 사용하는 경우 / etc / fstab에서 noacl을 사용하면 도움이되지 않습니다. 어떤 이유로 든 사용자를 제거하고 noacl, override 등을 시도하더라도 상속을 존중하지 않습니다. 최상위 드라이브로 재 동기화하고 /etc/rsyncd.conf의 path = / cygdrive / what을 사용하는 경우 대신 / etc / fstab에 별도의 마운트 지점을 만들고 rsyncd.conf에서 대신 마운트 지점을 사용해야합니다.

D:\     /d_drive  ntfs    binary,posix=0,noacl,user,override      0 0

/etc/rsyncd.conf에는 다음과 같은 것이 있습니다.

use chroot = yes

[d_drive]
path = /d_drive
comment = d_drive
auth users = someUser
secrets file = /etc/rsyncd.secrets
read only = false
write only = false
list = false
uid = someUser

그런 다음 Windows 시스템을 재부팅하고 rsync 서비스를 다시 시작해도 도움이되지 않는 것처럼 보였지만 chroot 및 chdir 오류가 계속 발생했습니다 (/ d_drive가 마운트되어 chroot = false를 사용하더라도 쓸 수 있음). 그런 다음 Windows 시스템으로 rsync 할 때 다음을 사용하십시오.

cd /local/path/to/copy
rsync -rltD --no-p --no-g --no-o  ./ rsync://someUser@localhost:remotePort/d_drive/

1

과거에는 다음과 같이 관리자 권한 takeown명령 프롬프트를 사용하여 Windows의 권한을 현재 사용자에게 다시 할당 했습니다.

takeown /f <NameOfFolder> /r /d Y

물론, rsync처음에 올바른 플래그 를 사용한 경우 이것은 불필요하지만 rsync이미 복사 한 파일에 대해 다시 실행하지 않으려면 이 방법을 권장합니다.


1
슈퍼 유저에 오신 것을 환영합니다! 질문을주의 깊게 다시 읽으십시오. 귀하의 답변은 원래 질문에 대한 답변이 아닙니다 .
DavidPostill

질문은 "무엇을 제공합니까?" 나는 그 대답이 해결책이 아니라 설명이라고 말하고 여기에 대한 대부분의 대답은 질문에 대답하지 않습니다. 이것은 여전히 ​​문제에 유용하고 상황에 맞는 적절한 추가 사항이지만 더 적절한 경우 의견으로 옮길 수 있습니다.
CodingLumis

오, 잠깐만, 50 점 이상의 평판을 얻지 못했기 때문에 의견을 추가 할 수 없으므로 여기에 남아 있어야합니다.
CodingLumis

correct rsync flags그리고 그것들은 무엇입니까?
oldmud0

@ oldmud0은 복사 중에 권한을 설정하는 플래그의 적절한 조합에 대해 내 앞에 나온 답변을 참조하십시오. 내 솔루션은 이미 파일을 복사했으며 권한이 올바른지 확인하기 위해 파일을 다시 삭제하지 않으려는 사람들에게 이상적입니다.
CodingLumis

0

rsnapshot백업에 rsync를 사용하는 이 문제가 발생했습니다 . --relative에서 제거하는 것을 재정의했습니다 rsync_long_args. 그 후 c이상한 권한을 가진 디스크 자체의 폴더 는 생성되지 않습니다.

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