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.