Rsync - 쓰기 권한이 거부되었습니다.

Rsync - 쓰기 권한이 거부되었습니다.

저는 rsyncWindows(Cygwin)에서 이것을 사용하여 공유 폴더(다른 Windows 인스턴스)에서 NFS 저장소로 파일을 이동하고 있습니다. 공유 폴더를 한 드라이브에 매핑하고 NFS 폴더를 다른 드라이브에 마운트했습니다.

rsync다음과 같이 명령을 시작합니다 .

C:\cygwin64\bin\rsync.exe -vrH --perms --partial --delete --stats --log-file=/home/Administrator/rsynclogs/backup.log /cygdrive/z/ /cygdrive/w/

30분 동안 실행한 후 오류로 인해 실패하면 ~17,000개의 파일이 전송된 것입니다.

rsync: write failed on "/cygdrive/w/domainName/Uploads/index_635244981053162421.html": Permission denied (13)

권한 거부 오류에 대한 이유가 표시되지 않습니다. 예를 들어 파일을 수동으로 복사하면 성공적으로 복사됩니다.

나는 이것이 rsync프로토콜의 단점이라는 것을 알고 있습니다. 프로토콜은 rsync대상에 대한 쓰기 권한이 있는지 미리 확인할 수 없습니다. 대신 나중에 성공 또는 실패를 보내고 확인합니다.

NFS 서버에 액세스 할 수 없습니다 ssh. 이는 스토리지 인스턴스입니다. 소스 Windows 클라이언트에 Cygwin이 있지만 NFS 스토리지에 액세스할 수 없습니다.

우리는 이전 2008 서버에서 새 서버로 마이그레이션하고 있습니다. 변경 사항 중 하나는 모든 스토리지를 공유 nfs 스토리지로 이동하는 것입니다. 이 구성이 완벽하지는 않지만 일시적이라는 것을 알고 있습니다. 약 한 달 동안 제대로 작동하려면 필요합니다. 안타깝게도 NFS 서비스는 2008 서버에 설치할 수 없습니다. 그렇지 않으면 rsync가 필요하지 않습니다.

오류가 발생하더라도 복사본을 계속 실행하려면 어떻게 해야 합니까?

다음 옵션을 사용하고 싶습니다.

 --partial-dir=DIR
 --delay-updates
 --inplace
 --ignore-errors

하지만 그것이 실제로 내 문제를 해결해 주는 것 같지는 않습니다. 어떤 제안이 있으십니까?

답변1

rsync파일을 다시 복사해야 하는지 인식할 수 있도록 파일 시간을 유지하도록 명령을 수정하는 것이 좋습니다 . 이를 수행하려면 --times플래그( )를 사용하십시오.-t

권한 오류가 일시적이라고 말씀하셨으므로 프로세스를 루프에 넣는 것이 좋습니다. 파일에 넣어서 실행해보세요bash

#!/bin/bash
while :
do
    rsync -rptv --partial --delete --stats --log-file=/home/Administrator/rsynclogs/backup.log /cygdrive/z/ /cygdrive/w/ && break
    sleep 30
done

-rpt-a가능한 개선 방법으로 플래그를 --archive파일 소유권도 유지하는 () 으로 바꾸는 것을 고려할 수 있습니다 .

관련 정보