Ubuntu

從一台伺服器到另一台伺服器的 Rsync 權限 - Mkdir 權限被拒絕 (13)

  • November 11, 2014

我正在嘗試每天使用 rsync 將本地電腦上的備份文件夾複製到另一台電腦(以防數據失去或意外刪除)。這作為 cronjob 執行。

我只是命令

rsync -av --rsh='ssh -p90' --delete /backup/ tentbackup@mydomain.com:~/dabackup/

從伺服器一 ( )root上的帳戶。tent

但是,在第一台伺服器上,每個子目錄的權限都已設置,因此除非您是 root(對文件夾沒有執行權限),否則您無法進入它們,這是我無法輕易更改的,因為它是備份軟體的方式作品。

這意味著在第二台伺服器 ( mydomain.com) 上,該帳戶tentbackup無權進入 rsync 正在創建的文件夾,從而導致以下錯誤

root@tent:~$ rsync -av --rsh='ssh -p92' --delete /backup/ tentbackup@mydomain.com:~/dabackup/
building file list ... done
03-05-11/apache/
rsync: recv_generator: mkdir "/home/tentbackup/dabackup/03-05-11/apache" failed: Permission denied (13)
*** Skipping any contents from this failed directory ***
03-05-11/bind/
rsync: recv_generator: mkdir "/home/tentbackup/dabackup/03-05-11/bind" failed: Permission denied (13)
*** Skipping any contents from this failed directory ***
03-05-11/custom/
rsync: recv_generator: mkdir "/home/tentbackup/dabackup/03-05-11/custom" failed: Permission denied (13)
etc...

我可以使用root@mydomain.com( server two) 解決這個問題,但顯然我不希望 root 帳戶的 ssh 密鑰儲存在server one( tent) 上。

如何安全地允許rsync創建這些子文件夾和文件的權限?


即使直接作為 tentbackup 登錄到伺服器 2,我也無法進入目錄或在其中創建文件

tentbackup@brave:~/dabackup$ cd 03-20-11/
bash: cd: 03-20-11/: Permission denied
tentbackup@brave:~/dabackup$ mkdir 03-20-11/test -p
mkdir: cannot create directory `03-20-11': Permission denied
tentbackup@brave:~/dabackup$ touch 03-20-11/test
touch: cannot touch `03-20-11/test': Permission denied

執行此操作的正確方法(儘管它確實更改了權限,因此如果這些很重要,您不能只從備份中恢復)是將以下內容添加到您的 rsynccommand

--no-p --no-g --chmod=ugo=rwX

在哪裡

--no-p禁用權限複製

--no-g禁用組複製和

--chmod=ugo=rwX確保啟用所有非屏蔽位

您正在嘗試執行設置權限明確禁止的操作。您要麼必須更改設置的權限,要麼給您的程序特殊權限。一種解決方法可能是cron在伺服器上創建一個修復目錄權限的作業。或者,您可以執行一個程序,因為root它等待來自ssh腳本的命令並修復目錄權限。

引用自:https://serverfault.com/questions/305764