2013-01-16 30 views
8

目標是通過ssh同步本地和遠程文件夾。使用rsync + ssh +公鑰作爲與ssh密鑰所有者不同的用戶同步本地和遠程目錄

我的當前用戶是user1的,和我有過SSH密碼的機會較少安裝到服務器server1的。 我想通過rsync實用程序將本地文件夾與server1上的文件夾同步。 通常我會運行:

rsync -rtvz /path/to/local/folder server1:/path/to/remote/folder 

SSH接入按預期工作,rsync的是能夠通過SSH連接,但它返回 「Permission denied」 錯誤因爲server1的文件夾/path/to/remote/folder是由用戶2擁有用戶2。文件夾的文件權限不允許其他人修改。 user1服務器1所以sudo su - user2ssh會話中的sudoer。 如何改變rsync切換用戶時ssh'編輯到服務器?

添加USER1到組用戶2是不是一種選擇,因爲服務器上的所有用戶/組管理是自動完成的,由中央回購複製每隔X分鐘,我沒有訪問。

與更改目標文件夾的權限/所有權相同:它會定期自動更新並重置所有權限。

來到我的腦海裏可能的解決方案是,同步與服務器上通過USER1擁有一個臨時的中間遠程文件夾的本地文件夾的腳本,然後同步2個遙控器文件夾,user2的

搜索更短,更漂亮的解決方案並沒有取得任何成功。

回答

5

我沒有通過我自己嘗試過,但關於使用rsync的 '--rsync路徑' 選項怎麼樣?

rsync -rtvz --rsync-path='sudo -u user2 rsync' /path/to/local/folder server1:/path/to/remote/folder 
+0

這正是我所需要的。按預期工作。非常感謝! – schatten

0

設置密碼少USER1接入訪問用戶2 @ server1的,然後執行:

rsync -rtvz /path/to/local/folder [email protected]:/path/to/remote/folder 
+1

是否將_user1_的公鑰添加到_user2_的授權ssh密鑰列表中?如果是的話,那些也會被覆蓋。 – schatten

1

要解決權限問題,你需要通過一個一個用於登錄SSH會話rsync的運行遠程爲user2:

rsync avz -e 'ssh -i privatekeyfile' /path/to/local/folder/ [email protected]:/path/to/local/folder 

以下答案解釋瞭如何設置SSH密鑰。

+0

沒有權限問題。 _user1_設置了SSH密鑰,_user1_是遠程計算機上的sudoer。因此,潛在_user1_具有執行rsync任務所需的全部特權。 – schatten

+0

@schatten這是一個權限問題。默認情況下,rsync不會像您接受的答案所示的那樣使用sudo。實際上,rsync可以這種方式進行調整非常聰明! –