在使用rsync
透過SSH進行資料同步時,如果目標機器的SSH服務沒有執行在預設的22埠上,你需要指定SSH連線應該使用的埠。這可以透過-e
選項來實現,後面跟上ssh
命令和-p
引數來指定埠號。
以下是使用非預設埠的SSH進行rsync
同步的基本命令格式:
rsync -avz -e "ssh -p <port>" <source> <user>@<host>:<destination>
這裡的引數解釋如下:
-a
:代表--archive
,它使得rsync
同步時保持原有檔案的屬性,如許可權、時間戳等。-v
:代表--verbose
,它使得rsync
在同步過程中提供詳細的輸出資訊。-z
:代表--compress
,它在傳輸過程中壓縮資料,以減少傳輸的資料量。-e
:允許你指定一個命令來建立到遠端主機的安全連線。在這個例子中,我們使用ssh
。-p <port>
:指定SSH連線應該使用的埠號。<source>
:原始檔或目錄的路徑。<user>
:目標機器上的使用者名稱。<host>
:目標機器的主機名或IP地址。<destination>
:目標檔案或目錄的路徑。
例如,如果目標機器的SSH服務執行在埠2222
上,你可以使用以下命令:
rsync -avz -e "ssh -p 2222" /path/to/source/ user@example.com:/path/to/destination/
在這個例子中,/path/to/source/
是本地要同步的源目錄,user@example.com
是目標機器的使用者名稱和地址,/path/to/destination/
是目標目錄,而-p 2222
指定了使用埠2222
。
此外,如果你經常需要使用非預設埠進行同步,可以將這個埠號配置在~/.ssh/config
檔案中,這樣你就不需要在每次使用rsync
時都指定埠號。配置檔案示例如下:
Host myserver
HostName example.com
User myuser
Port 2222
在這個配置中,Host myserver
是一個別名,你可以在rsync
命令中使用它來代替完整的主機名和埠資訊:
rsync -avz -e "ssh -p 2222" /path/to/source/ myserver:/path/to/destination/
綜上所述,你就不需要在每次命令中都指定埠號,因為SSH客戶端會從配置檔案中讀取埠資訊。
綜上所述,請確保在使用這些命令之前,你已經正確配置了SSH金鑰或密碼認證,以便rsync
能夠無障礙地透過SSH連線到遠端主機。