Ubuntu
從一台伺服器到另一台伺服器的 Rsync 權限 - Mkdir 權限被拒絕 (13)
我正在嘗試每天使用 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
腳本的命令並修復目錄權限。