Windows
Rsync - 寫入權限被拒絕
我
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
,這也可以保持文件所有權。