如何使用SFTP與Linux服務器之間傳輸文件?
譯文【51CTO.com快譯】大多數(shù)人需要與Linux/BSD服務器之間傳輸文件時,青睞FileZilla或WinSCP之類的實用程序。如果OpenSSH守護程序在該計算機上運行,可以通過SSH FTP協(xié)議(SFTP)連接到它。上述實用程序提供了圖形界面,確實讓用戶更容易傳輸文件,不過得安裝和配置這種程序。
一些純粹主義者更喜歡不必安裝額外的實用程序。其他人完全偏愛命令行,因為命令行提供了更大的控制權(quán),并更快地告訴實用程序你希望它執(zhí)行什么操作。但如果你想傳輸文件,現(xiàn)在多了一個使用命令行的理由。默認情況下,Windows 10含有OpenSSH客戶軟件,讓你可以直接從命令提示符登錄到Linux/ BSD服務器。
該客戶軟件還附帶其他許多實用程序,其中包括SFTP。因此,你現(xiàn)在還可以直接從命令提示符將文件傳輸?shù)絃inux / BSD操作系統(tǒng),沒必要在Windows計算機上安裝任何東西。
SFTP實用程序在Linux機器上也可以使用,用起來一樣。
如何使用SFTP命令登錄?
如果你使用Windows,打開命令提示符。如果使用Linux,打開終端窗口。
想使用SFTP命令登錄到服務器,請使用與SSH命令一模一樣的語法。如果你不熟悉該語法,請閱讀簡介段落中鏈接的教程。
- sftp your_username@IP-address-or-hostname
示例性命令:
- sftp john@203.0.113.1
- sftp john@example.com
圖1
使用SFTP登錄后如何下載文件?
現(xiàn)在你可以在sftp >提示符下輸入命令,與服務器上的文件進行聯(lián)系。
想下載文件:
- get /path/to/file/on/server
示例:
- get /bin/ls
這將下載到你的當前目錄,即在登錄到服務器之前所在的本地目錄。想下載到某個特定的本地目錄(Windows上):
- get /path/to/file/on/server C:\path\to\local\folder
示例:
- get /bin/ls C:\User\John\Desktop
在Linux上,你只要使用Unix類型路徑(正斜杠而不是反斜杠):
- get /bin/ls /home/john/Desktop
注意:就算你誤將正斜杠用于Windows路徑,SFTP這個實用程序似乎也能理解。
路徑也可以是相對的。這意味著如果你打開命令提示符時已經(jīng)在C:\User\John,可以用下列命令下載到你的桌面(C:\User\John\Desktop):
- get /bin/ls Desktop
遠程路徑也可以是相對的,這意味著如果你用sftp john@203.0.113.1登錄,你就已經(jīng)在目錄“/home/john”,所以可以使用該目錄來下載“/home/john/file”。
- get file Desktop
這會將“/home/john/file”下載到“C:\Users\YourUser\Desktop\file”。
若想拷貝目錄,你得將-r參數(shù)添加到命令,這個參數(shù)代表遞歸。
- get -r /bin Desktop\bin
圖2
記得為你想在本地創(chuàng)建的新目錄添加名稱,比如本文中的“Desktop\bin”。如果你想使用get -r /bin Desktop,文件將直接拷貝到Desktop。拷貝的是文件,而不是該目錄本身。
如何在使用SFTP登錄后上傳文件?
上傳文件或目錄遵循同樣的原則。例外就是,路徑是反向的,這意味著你得先指定本地文件/目錄,然后指定遠程路徑。
在Windows上:
- put C:\path\to\local\content /path/where/to/upload
在Linux上:
- put /path/to/local/content /path/to/remote/location
上傳目錄(遞歸)時,記住上面的那個規(guī)則同樣適用:拷貝的實際上是目錄中的文件,而不是目錄本身。所以為你想要將那些文件拷貝過去的目錄指定一個新的名稱。
- put -r Desktop/bin bin
這將在遠端創(chuàng)建一個名為“bin”的新目錄。
想退出SFTP外殼,只要輸入:
- exit
如何恢復傳輸,并使用含有空格的路徑?
傳輸大文件時,如果傳輸出現(xiàn)中斷,可以把前面的命令換成reput和reget(取代put和get),恢復傳輸。務必確保你使用的路徑與上一次使用的一模一樣,以便源端和目的地完全匹配。
- reget /path/to/file/on/server C:\path\to\local\file
- reput C:\path\to\local\file /path/to/file/on/server
想恢復目錄傳輸,只要添加-r參數(shù)。
- reput -r Desktop/bin bin
如果文件路徑含有空格,把它放在引號里面。
這不行:
- put C:\Program Files (x86)\Steam\steamapps\common\The Witcher 3\SOUNDTRACK\The_Witcher_3_Wild_Hunt_-_Official_Soundtrack_(steam_edition)_mp3.zip
但這行:
- put "C:\Program Files (x86)\Steam\steamapps\common\The Witcher 3\SOUNDTRACK\The_Witcher_3_Wild_Hunt_-_Official_Soundtrack_(steam_edition)_mp3.zip"
(是的,如果你已安裝在Steam上,實際上可以在上面找到Witcher 3的音軌。)
結(jié)束語
本文介紹了關(guān)于SFTP的最重要幾點。如果你覺得需要了解更多的信息,可以在網(wǎng)上閱讀完整的SFTP命令說明手冊(http://man7.org/linux/man-pages/man1/sftp.1.html)。
原文標題:How to Use SFTP to Transfer Files to/from Linux Servers,作者:Alexandru Andrei
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】