Ssh

rsync 如何區分destination 是在目錄名中帶有’:’ 和’@’ 的本地目錄,還是遠端SSH?

  • November 24, 2020

從技術上講,我們可以創建一個名為user@example.com:(它是一個有效的 UNIX 路徑,不是嗎?)的本地目錄,那麼rsync內部如何知道:

rsync test/ user@example.com:/test/

方法:

  • 目的地是本地路徑user@example.com:/test/(即./user@example.com:/test/
  • 目標是遠端主機user@example.com:/test/

?

出於好奇,rsync使用的決策規則是什麼?

這很複雜。

rsync中建議的解決方案:文件名中的冒號似乎通常可以工作,但是有很多可能的極端情況。

範例: rsync 如何知道rsync src ./hello@b.com:/test/dest 是遠端的還是本地的?

它可以是./hello@b.com:/test/帶有:@在目錄名稱中的本地路徑。

或者它可能是一個帶有使用者名./hello(奇怪的 Unix 使用者名,但有可能!嘗試使用useradd!)、 hostb.com和 path的遠端/test/

是OpenSSH的scp實現中解析URI的程式碼,值得一讀。

IETF 草案中解釋了這些規則https://datatracker.ietf.org/doc/html/draft-ietf-secsh-scp-sftp-ssh-uri-04

引用自:https://unix.stackexchange.com/questions/621038