2017-05-05 97 views
0

我試圖通過SSH在兩臺計算機之間執行rsync(來源:macOS 10.11.6 - > Dest:macOS 10.12.4)並且希望保留所有特定於mac的屬性以及權限和所有權。rsync與-a執行爲sudo不保留文件所有權

我已經在兩臺機器上使用補丁,fileflags,crtimes和hfs-compression在源碼上構建並安裝了最新的rsync(3.1.2)。

我已經修改了目標計算機上的/ etc/sudoers文件中還說: 用戶名ALL =(ALL)NOPASSWD:ALL 這似乎工作細如使用sudo時,我沒有要求密碼。 (我知道我可以限制這只是rsync命令,但在調試過程中,我使用所有在這裏)

執行:

rsync -avNHAXEx --safe-links --fileflags --protect-decmpfs --force-change -- progress --delete --rsync-path="sudo /usr/local/bin/rsync" --progress /path/to/src [email protected]_of_dest:/path/to/dst 

導致正確的同步除了這些文件有Posix的所有者ssh_user'而不是目標機器上的原始所有者。

簡單

rsync -av --rsync-path="sudo /usr/local/bin/rsync" /path/to/src [email protected]_of_dest:/path/to/dst 

也改變了所有權和rsync拉與目標計算機上執行sudo的給出了相同的結果。

那麼,我在這裏錯過了什麼?不應該 - 目標上的超級權利足夠了嗎?

回答

0

回答這個擁有如萬一有人備查有類似的經歷

更多的調試後,我想我已經找到了答案。 rsync正在按預期執行,問題是ssh_user和file_owner實際上都具有相同的UID。在目標機器上列出文件嚴重困擾我,因爲這些文件顯示屬於ssh_user。使用--numeric-ids並將文件恢復到源計算機會產生預期結果。