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