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

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

【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】

 

责任编辑:武晓燕 来源: 51CTO
相关推荐

2023-02-03 10:38:07

2019-08-30 13:25:09

WinSCPWindowsLinux

2019-08-02 10:20:39

OpenSSHWindows 10SFTP

2017-03-03 09:19:53

SSH命令服务器

2018-11-08 09:56:28

服务器移动硬盘

2021-11-19 12:00:12

Linux传输文件

2019-10-23 04:37:56

Jschsftp服务器

2011-03-04 09:58:47

FileZillaWindowsXP

2021-06-01 08:00:00

Linux操作系统工具

2009-03-04 06:18:00

FTP服务器双向传输FTP服务器搭建

2022-03-30 08:23:51

FileZillaLinux开源

2018-06-29 09:20:13

2010-05-07 16:19:18

Unix服务器

2017-03-09 14:42:21

LinuxsFTP上传下载

2009-02-10 15:46:00

VNCLinux服务器远程桌面

2015-08-05 09:35:38

Bastille服务器安全

2012-09-21 09:31:48

Linux服务器Windows

2009-11-11 10:18:02

2011-09-01 18:12:43

Linuxsamba

2012-09-20 09:17:18

LinuxWindows
点赞
收藏

51CTO技术栈公众号