2012-03-14 50 views
2

我有一個bash腳本來在兩臺服務器之間同步Zendframework站點,但由於某種原因,一個文件沒有得到正確的所有者/組。由於該文件然後變得無法通過apache讀取該站點在該服務器上。rsync設置錯誤組

在我有以下文件中的第一個服務器:

-rwxrwx--- 1 monit www-data 4184 2012-03-14 05:39 application.ini 

這應該是完全相同的第二臺服務器上,因爲這兩個用戶的monit和組www數據存在有相同的,但這不是如下所示。

-rwxrwx--- 1 monit monit 4184 2012-03-14 05:39 application.ini 

此文件是唯一受影響的文件。所有其他文件獲得正確的權限,所有者和組。 rsync命令如下:

rsync -az --delete --stats --include="document_root/.*" --exclude=".*" SERVER1 SERVER2 

rsync的是3.0.3版本,服務器1是Ubuntu的9.04和Server2是Debian的5.0

在有問題的是通過設置在原始文件的權限繞過的那一刻到-rwxrwxr--。同步文件仍然有錯誤的組,但至少可讀。

回答

2

檢查monit用戶是否在目標服務器上的www-data組中。 嘗試僅僅rsyncing有問題的文件,而在目標服務器上運行的rsync和添加一個或多個-v選項,然後查看輸出:

$ groups monit |grep www-data 
$ rsync -avv source_host:path/to/application.ini ./application.ini 
+0

用戶monit的僅僅是monit的組的成員和唯一成員在組www-data中是由apache創建的用戶www-data。兩臺服務器都是如此。只有同步該文件沒有提供任何有用的信息,但我確實注意到更多與monit同步的文件:更多搜索後的monit所有權 – Lobo 2012-03-14 06:20:30

+1

如果rsync作爲monit用戶(即非root用戶)運行,則無法將文件組更改爲它不屬於的組。嘗試作爲監控用戶'chgrp www-data application.ini',看到它出現「操作不允許」的錯誤。如果rsync以www數據用戶身份運行,它不能顯示爲monit。解決方案是將monit用戶添加到www-data組,或者像更改權限一樣更改權限,或者以root身份運行rsync(壞主意)。 – 2012-03-14 06:23:32

+0

Doh。有時候我很傻。但是,即使我已經添加用戶monit來分組www數據,仍然會出現同樣的問題。看來我沒有權限改變團體,甚至是我所屬的團體。但我滿足於現在只是將用戶www-data添加到組monit中,這也解決了問題,但如果您可以給我任何更多的輸入,我會很高興。 – Lobo 2012-03-14 06:49:11