|
|
51CTO旗下网站
|
|
移动端

如何使用SFTP与Linux服务器之间传输文件?

大多数人需要与Linux/BSD服务器之间传输文件时,青睐FileZilla或WinSCP之类的实用程序。如果OpenSSH守护程序在该计算机上运行,​​可以通过SSH FTP协议(SFTP)连接到它。上述实用程序提供了图形界面,确实让用户更容易传输文件,不过得安装和配置这种程序。

作者:布加迪编译来源:51CTO|2019-02-20 08:53

【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命令一模一样的语法。如果你不熟悉该语法,请阅读简介段落中链接的教程。

  1. sftp your_username@IP-address-or-hostname 

示例性命令:

  1. sftp john@203.0.113.1 
  2. sftp john@example.com 

图1

使用SFTP登录后如何下载文件?

现在你可以在sftp >提示符下输入命令,与服务器上的文件进行联系。

想下载文件:

  1. get /path/to/file/on/server 

示例:

  1. get /bin/ls 

这将下载到你的当前目录,即在登录到服务器之前所在的本地目录。想下载到某个特定的本地目录(Windows上):

  1. get /path/to/file/on/server C:\path\to\local\folder 

示例:

  1. get /bin/ls C:\User\John\Desktop 

在Linux上,你只要使用Unix类型路径(正斜杠而不是反斜杠):

  1. get /bin/ls /home/john/Desktop 

注意:就算你误将正斜杠用于Windows路径,SFTP这个实用程序似乎也能理解。

路径也可以是相对的。这意味着如果你打开命令提示符时已经在C:\User\John,可以用下列命令下载到你的桌面(C:\User\John\Desktop):

  1. get /bin/ls Desktop 

远程路径也可以是相对的,这意味着如果你用sftp john@203.0.113.1登录,你就已经在目录“/home/john”,所以可以使用该目录来下载“/home/john/file”。

  1. get file Desktop 

这会将“/home/john/file”下载到“C:\Users\YourUser\Desktop\file”。

若想拷贝目录,你得将-r参数添加到命令,这个参数代表递归。

  1. get -r /bin Desktop\bin 

图2

记得为你想在本地创建的新目录添加名称,比如本文中的“Desktop\bin”。如果你想使用get -r /bin Desktop,文件将直接拷贝到Desktop。拷贝的是文件,而不是该目录本身。

如何在使用SFTP登录后上传文件?

上传文件或目录遵循同样的原则。例外就是,路径是反向的,这意味着你得先指定本地文件/目录,然后指定远程路径。

在Windows上:

  1. put C:\path\to\local\content /path/where/to/upload 

在Linux上:

  1. put /path/to/local/content /path/to/remote/location 

上传目录(递归)时,记住上面的那个规则同样适用:拷贝的实际上是目录中的文件,而不是目录本身。所以为你想要将那些文件拷贝过去的目录指定一个新的名称。

  1. put -r Desktop/bin bin 

这将在远端创建一个名为“bin”的新目录。

想退出SFTP外壳,只要输入:

  1. exit 

如何恢复传输,并使用含有空格的路径?

传输大文件时,如果传输出现中断,可以把前面的命令换成reput和reget(取代put和get),恢复传输。务必确保你使用的路径与上一次使用的一模一样,以便源端和目的地完全匹配。

  1. reget /path/to/file/on/server C:\path\to\local\file  
  2. reput C:\path\to\local\file /path/to/file/on/server 

想恢复目录传输,只要添加-r参数。

  1. reput -r Desktop/bin bin 

如果文件路径含有空格,把它放在引号里面。

这不行:

  1. put C:\Program Files (x86)\Steam\steamapps\common\The Witcher 3\SOUNDTRACK\The_Witcher_3_Wild_Hunt_-_Official_Soundtrack_(steam_edition)_mp3.zip 

但这行:

  1. 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】

【编辑推荐】

  1. 如何从Linux上连接到远程桌面
  2. Windows 10新版改进:资源管理器可直接访问Linux文件
  3. 14个依然很棒的Linux ASCII游戏
  4. 在Linux上创建文件的10个方法
  5. 在VirtualBox上安装Kali Linux的最安全快捷的方式
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

用Python玩转excel

用Python玩转excel

让重复操作傻瓜化
共3章 | DE8UG

162人订阅学习

AI入门级算法

AI入门级算法

算法常识
共22章 | 周萝卜123

131人订阅学习

这就是5G

这就是5G

5G那些事儿
共15章 | armmay

126人订阅学习

读 书 +更多

设计模式:可复用面向对象软件的基础(双语版)

《设计模式:可复用面向对象软件的基础》(双语版)是引导读者走入软件设计迷宫的指路明灯,凝聚了软件开发界几十年的设计经验。四位顶尖的...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微