菜鸟科技网

sftp下载命令有哪些参数及用法?

基本连接和操作

在使用 SFTP 下载文件之前,你首先需要连接到远程服务器。

sftp下载命令有哪些参数及用法?-图1
(图片来源网络,侵删)

连接到服务器

打开你的终端(在 Windows 上可以使用 PowerShell, WSL 或 PuTTY),然后输入:

sftp [username]@[remote_host]
  • [username]:你的远程服务器用户名。
  • [remote_host]:服务器的 IP 地址或域名。

示例:

sftp john@example.com

连接成功后,你会看到 sftp> 提示符,表示你现在已经进入了 SFTP 命令行环境。


核心 SFTP 下载命令

sftp> 提示符下,你可以使用以下命令来下载文件和目录。

sftp下载命令有哪些参数及用法?-图2
(图片来源网络,侵删)

下载单个文件 (get)

这是最常用的下载命令。

语法:

get [remote_file] [local_file]
  • [remote_file]:远程服务器上的文件路径。
  • [local_file]:本地保存的文件路径(可选),如果省略,文件将使用与远程相同的名称保存在当前本地目录。

示例:

  • 下载远程文件 report.pdf 到当前本地目录:

    sftp下载命令有哪些参数及用法?-图3
    (图片来源网络,侵删)
    sftp> get report.pdf
  • 下载远程文件 report.pdf 并重命名为 local_report.pdf

    sftp> get report.pdf local_report.pdf
  • 下载远程 /home/john/docs/report.pdf 到本地当前目录:

    sftp> get /home/john/docs/report.pdf

下载整个目录 (get -r)

要下载一个目录及其所有内容,需要使用 -r (recursive) 选项。

语法:

get -r [remote_directory] [local_directory]
  • [remote_directory]:远程服务器上的目录路径。
  • [local_directory]:本地保存的目录路径(可选),如果省略,目录将使用与远程相同的名称保存在当前本地目录。

示例:

  • 下载远程 my_project 目录到本地当前目录:

    sftp> get -r my_project
  • 下载远程 my_project 目录并重命名为 project_backup

    sftp> get -r my_project project_backup

实用 SFTP 下载技巧与高级选项

在实际工作中,你可能需要更精细的控制。

查看和切换目录

在下载文件前,你需要确保在正确的远程和本地目录下。

  • ls [remote_path]:列出远程目录内容。
    sftp> ls /home/john/docs/
  • cd [remote_path]:切换远程工作目录。
    sftp> cd /var/www/html
  • pwd:显示当前远程工作目录。
    sftp> pwd
    # 输出: Remote working directory: /var/www/html
  • lpwd:显示当前本地工作目录。
    sftp> lpwd
    # 输出: /Users/yourname/Downloads
  • lcd [local_path]:切换本地工作目录。
    sftp> lcd ~/Desktop

最佳实践: 在下载前,先用 cdlcd 切换到正确的远程和本地目录,这样 get 命令就可以使用简短的文件名。

下载时设置文件权限 (get -P)

-P 选项可以让你在下载时保留或设置文件的原始权限(权限位)。

语法:

get -P [remote_file]

示例:

sftp> get -P script.sh

下载时限制速率 (get -S)

如果网络环境敏感,你可以限制 SFTP 下载的速率,避免占用过多带宽。

语法:

get -S [rate] [remote_file]
  • [rate]:速率,单位可以是 K, M, G (100K, 1M)。

示例:

# 限制下载速率为 100KB/s
sftp> get -S 100K large_file.zip

断点续传 (get -a)

如果下载大文件时网络中断,可以使用 -a 选项(--append)从上次中断的地方继续下载,而不是重新开始。

语法:

get -a [remote_file]

示例:

# 假设之前下载 movie.iso 中断了
sftp> get -a movie.iso

完整操作示例

下面是一个完整的 SFTP 会话示例,展示了从连接到下载文件的完整流程。

# 1. 连接到服务器
$ sftp john@example.com
Connecting to example.com...
john@example.com's password: ********
Welcome to SFTP ...
sftp>
# 2. 查看远程服务器上的文件
sftp> ls
docs  public_html  report.pdf  temp
# 3. 切换到包含目标文件的远程目录
sftp> cd docs
sftp> pwd
Remote working directory: /home/john/docs
# 4. 查看本地当前目录
sftp> lpwd
Local working directory: /Users/john/Downloads
# 5. 下载 'project_files' 目录(递归)
sftp> get -r project_files
Fetching /home/john/docs/project_files to project_files
...
receiving file list ... done
...
sent 12345 bytes  received 67890 bytes  12345.00 bytes/sec
total size is 12345678  speedup is 123.45
# 6. 下载单个文件 'report.pdf'
sftp> get report.pdf
Fetching /home/john/docs/report.pdf to report.pdf
/reports/report.pdf      100%   256KB  256.0KB/s   00:00
# 7. 退出 SFTP 会话
sftp> exit

从命令行直接执行(单行命令)

你不想进入交互式 SFTP 环境,只想快速执行一个下载命令,这时可以使用 sftp 命令的单行模式。

语法:

sftp [username]@[remote_host] "get [remote_file] [local_file]; exit"

示例:

# 从 example.com 下载 report.pdf 到当前目录,然后退出
sftp john@example.com "get report.pdf; exit"

这种方式非常适合在脚本(如 Shell 脚本)中自动化文件传输。


常见问题与解决

  • get: unexpected failure:这通常是由于权限不足或文件路径错误导致的,请检查远程文件是否存在,以及你的用户是否有读取权限。
  • Permission denied:确认你的 SFTP 用户对目标文件或目录有读取权限。
  • sftp> 提示符下无法使用 ls -l:标准的 ls -l 在某些 SFTP 客户端中可能不被支持,可以尝试使用 ls -h 或直接使用 ls,如果需要更详细的列表,可以使用 dir 命令,它通常等同于 ls -l
  • 连接超时:检查网络连接,确认远程主机地址和端口(默认是 22)是否正确。

希望这份详细的指南能帮助你熟练掌握 SFTP 下载命令!

分享:
扫描分享到社交APP
上一篇
下一篇