如何在Linux中通過SSH通過Rsync傳輸文件

當在網絡上的系統之間傳輸文件時,Linux和Unix用戶可以使用許多工具。

最受歡迎的數據傳輸協議是SSH和FTP。 儘管FTP非常流行,但始終首選使用SSH,因為它是傳輸文件的最安全方式。

有專門的工具可以通過SSH傳輸文件,例如 scpsftp 但它們都不具有所有的功能 rsync 提供。 rsync 可用於鏡像數據,增量備份,在系統之間複製文件等。

在本教程中,我們將說明如何使用 rsync 通過SSH。

要求

  • rsync 該實用程序必須同時安裝在目標系統和源系統上。 如果尚未安裝,則可以使用發行版的程序包管理器進行安裝:

    Ubuntu和Debian:

    sudo apt install rsync
    

    CentOS和Fedora:

    sudo yum install rsync
    
  • SSH訪問遠程計算機。

  • 用戶正在運行 rsync 命令和遠程SSH用戶必須具有適當的權限才能讀取和寫入文件。

使用 rsync 通過SSH傳輸文件

rsync,您可以通過SSH在遠程服務器之間傳輸文件和目錄。

使用以下命令傳輸文件的一般語法 rsync 如下:

Local to Remote: rsync [OPTION]... -e ssh [SRC]... [[email protected]]HOST:DEST
Remote to Local: rsync [OPTION]... -e ssh [[email protected]]HOST:SRC... [DEST]

哪裡 SRC 是源目錄, DEST 是目標目錄 USER 是遠程SSH用戶名, HOST 是遠程SSH主機或IP地址。

較新版本的rsync已配置為使用SSH作為默認遠程Shell,因此您可以省略 -e ssh 選項。

例如,傳輸單個文件 /opt/file.zip 從本地系統到 /var/www/ IP遠程系統上的目錄 12.12.12.12 您將運行:

rsync -a /opt/file.zip [email protected]:/var/www/

-a option代表存檔模式,它將遞歸同步目錄,傳輸特殊設備和塊設備,保留符號鏈接,修改時間,組,所有權和權限。

如果尚未設置無密碼的SSH登錄到遠程計算機,將提示您輸入用戶密碼。

如果該文件存在於遠程服務器上,它將被覆蓋。 如果要使用其他名稱保存文件,請指定新名稱:

rsync -a /opt/file.zip [email protected]:/var/www/file2.zip

要將數據從遠程傳輸到本地計算機,請使用遠程位置作為源,並使用本地位置作為目標:

rsync -a [email protected]:/var/www/file.zip /opt/

傳輸目錄 rsync 通過SSH與傳輸文件相同。

重要的是要知道 rsync 給源目錄以斜杠尾號 /。 當源目錄帶有斜杠時, rsync 只會將源目錄的內容複製到目標目錄。 當省略斜杠時,源目錄將被複制到目標目錄中。

例如轉移本地 /opt/website/images/ 目錄到 /var/www/images/ 您將在遠程計算機上輸入的目錄:

rsync -a /home/linuxhowto/images/ [email protected]:/var/www/images/

使用 --delete 如果要同步本地和遠程目錄,請選擇該選項。 使用此選項時要小心,因為如果源目錄中不存在目標文件,它將刪除目標目錄中的文件。

rsync -a --delete /home/linuxhowto/images/ [email protected]:/var/www/images/

如果遠程主機上的SSH正在偵聽默認端口以外的端口 22,使用 -e 選項。 例如,如果SSH正在偵聽端口 3322 您將使用:

rsync -a -e "ssh -p 3322" /home/linuxhowto/images/ [email protected]:/var/www/images/

傳輸大量數據時,建議運行 rsync 在屏幕會話中命令或使用 -P 告訴的選項 rsync 在傳輸過程中顯示進度條並保留部分傳輸的文件:

rsync -a -P /home/linuxhwoto/images/ [email protected]:/var/www/images/

結論

我們已經向您展示了如何使用 rsync 通過SSH複製和同步文件和目錄。

您可能還想閱讀如何使用以下方法排除文件或目錄 rsync

如有任何疑問,請隨時發表評論。

Sidebar