Windows

Rsync - 寫入權限被拒絕

  • December 12, 2018

rsync在 Windows (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協議無法事先確定它是否在目標上具有寫權限。相反,它只是在之後發送並檢查成功或失敗。

我無權ssh訪問 NFS 伺服器——它是一個儲存實例。源 Windows 客戶端具有 Cygwin,但無權訪問 NFS 儲存。

我們正在從 2008 年的舊伺服器遷移到新伺服器。其中一項更改是將所有儲存移動到共享的 nfs 儲存。我知道這個配置並不完美,但它是暫時的。我需要它正常工作一個月左右。不幸的是,NFS 服務無法安裝在 2008 伺服器上,否則就不需要 rsync。

即使出現錯誤,如何讓我的副本繼續執行?

我想使用這些選項:

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

但看起來它並不能真正解決我的問題。有什麼建議麼?

我建議您修改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,這也可以保持文件所有權。

引用自:https://unix.stackexchange.com/questions/487296