【51CTO.com快译】大多数人需要与Linux/BSD服务器之间传输文件时,青睐FileZilla或WinSCP之类的实用程序。如果OpenSSH守护程序在该计算机上运行,可以通过SSH FTP协议(SFTP)连接到它。上述实用程序提供了图形界面,确实让用户更容易传输文件,不过得安装和配置这种程序。
一些纯粹主义者更喜欢不必安装额外的实用程序。其他人完全偏爱命令行,因为命令行提供了更大的控制权,并更快地告诉实用程序你希望它执行什么操作。但如果你想传输文件,现在多了一个使用命令行的理由。默认情况下,Windows 10含有OpenSSH客户软件,让你可以直接从命令提示符登录到Linux/ BSD服务器。
该客户软件还附带其他许多实用程序,其中包括SFTP。因此,你现在还可以直接从命令提示符将文件传输到Linux / BSD操作系统,没必要在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登录后如何下载文件?
现在你可以在sftp >提示符下输入命令,与服务器上的文件进行联系。
想下载文件:
- 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这个实用程序似乎也能理解。
路径也可以是相对的。这意味着如果你打开命令提示符时已经在C:\User\John,可以用下列命令下载到你的桌面(C:\User\John\Desktop):
- get /bin/ls Desktop
远程路径也可以是相对的,这意味着如果你用sftp john@203.0.113.1登录,你就已经在目录“/home/john”,所以可以使用该目录来下载“/home/john/file”。
- get file Desktop
这会将“/home/john/file”下载到“C:\Users\YourUser\Desktop\file”。
若想拷贝目录,你得将-r参数添加到命令,这个参数代表递归。
- get -r /bin Desktop\bin
图2
记得为你想在本地创建的新目录添加名称,比如本文中的“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
上传目录(递归)时,记住上面的那个规则同样适用:拷贝的实际上是目录中的文件,而不是目录本身。所以为你想要将那些文件拷贝过去的目录指定一个新的名称。
- put -r Desktop/bin bin
这将在远端创建一个名为“bin”的新目录。
想退出SFTP外壳,只要输入:
- exit
如何恢复传输,并使用含有空格的路径?
传输大文件时,如果传输出现中断,可以把前面的命令换成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参数。
- 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的音轨。)
结束语
本文介绍了关于SFTP的最重要几点。如果你觉得需要了解更多的信息,可以在网上阅读完整的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译稿,合作站点转载请注明原文译者和出处为51CTO.com】