SSH 下载文件命令有哪些?

SSH(Secure Shell)是一种网络协议,用于加密方式远程登录和管理服务器,同时也支持安全的文件传输,通过SSH下载文件,常用的方法包括scp(secure copy)、sftp(SSH File Transfer Protocol)以及结合rsync等工具,以下是详细的命令介绍和使用场景分析,帮助用户高效、安全地完成文件下载任务。

ssh 下载文件命令
(图片来源网络,侵删)

使用scp命令下载文件

scp是基于SSH的文件复制工具,适用于本地与远程服务器之间的单向文件传输,其基本语法为:
scp [选项] [用户@远程主机]:[远程文件路径] [本地目标路径]

常用选项及示例:

  1. 基础下载
    从远程服务器下载单个文件到当前目录:

    scp user@remote:/path/to/file.txt .

    从远程服务器下载文件到指定本地路径:

    scp user@remote:/path/to/file.txt /local/path/
  2. 下载整个目录
    需添加-r选项递归复制目录:

    ssh 下载文件命令
    (图片来源网络,侵删)
    scp -r user@remote:/path/to/directory /local/path/
  3. 指定端口
    若SSH服务非默认22端口,需用-P(大写)指定:

    scp -P 2222 user@remote:/path/to/file.txt .
  4. 限制带宽
    通过-l选项限制传输速率(单位:Kbit/s):

    scp -l 1024 user@remote:/path/to/file.txt .
  5. 压缩传输
    添加-C选项启用压缩,适合大文件或低带宽环境:

    scp -C user@remote:/path/to/large_file.zip .

注意事项:

  • 需提前配置SSH免密登录或手动输入密码,否则传输会中断。
  • 若远程文件路径包含空格或特殊字符,需用引号包裹,如scp 'user@remote:/path/to/my file.txt' .

使用sftp交互式下载

sftp是SSH的文件传输协议,提供类似FTP的交互式命令行界面,适合批量操作或复杂路径管理,启动方式为:

ssh 下载文件命令
(图片来源网络,侵删)
sftp [用户@远程主机]

常用命令及示例:

  1. 连接后操作

    • 登录后进入远程目录:cd /path/to/remote
    • 下载文件到本地:get file.txt
    • 下载整个目录:get -r directory
    • 指定本地路径下载:get file.txt /local/path/
    • 退出:exitbye
  2. 批量下载
    结合通配符下载多个文件:

    mget *.txt
  3. 显示进度
    使用-b选项通过批处理脚本实现进度显示:

    sftp -b batch_script.txt user@remote

    其中batch_script.txt内容为:

    cd /remote/path
    get file.txt
    exit

优势:

  • 支持断点续传(通过get -rreget命令)。
  • 可交互式查看远程文件系统结构,避免路径错误。

结合rsync增量下载

rsync通过SSH协议实现增量同步,适合大文件或频繁更新的场景,仅传输变化部分,节省带宽,语法为:

rsync [选项] [用户@远程主机]:[远程路径] [本地路径]

常用选项及示例:

  1. 基础同步

    rsync -avz user@remote:/path/to/remote_dir /local/path/
    • -a:归档模式,保留权限、时间戳等属性。
    • -v:显示详细过程。
    • -z:压缩传输数据。
  2. 删除本地多余文件
    若需使本地目录与远程完全一致(包括删除本地已不存在的文件):

    rsync -avz --delete user@remote:/path/to/remote_dir /local/path/
  3. 排除特定文件
    通过--exclude选项跳过文件或目录:

    rsync -avz --exclude='*.log' user@remote:/path/to/remote_dir /local/path/

适用场景:

  • 定时备份或同步远程服务器数据。
  • 仅传输新增或修改的文件,大幅提升效率。

不同工具对比

工具优点缺点适用场景
scp简单易用,适合单次文件传输不支持断点续传,无交互界面少量文件、快速下载
sftp支持交互操作、断点续传需手动输入命令,效率较低批量操作、复杂路径管理
rsync增量传输,高效同步参数复杂,学习成本较高大文件、频繁更新的数据备份

常见问题与解决

  1. 权限不足导致下载失败
    原因:远程文件权限不足或本地目标路径无写入权限。
    解决:检查远程文件权限(ls -l),或使用sudo下载到本地有权限的目录。

  2. 传输中断后如何续传
    方法

    • scp:不支持原生续传,需重新传输或改用rsync
    • sftp:使用reget file.txt命令续传。
    • rsync:直接重新运行命令,自动识别已传输部分。

相关问答FAQs

Q1: 如何通过SSH下载远程服务器的整个文件夹,同时排除其中某个子目录?
A: 使用rsync命令的--exclude选项,例如排除logs子目录:

rsync -avz --exclude='logs' user@remote:/path/to/remote_dir /local/path/

若需排除多个目录,可多次使用--exclude,或通过--exclude-from=/path/to/exclude_list.txt指定排除规则文件。

Q2: 在下载大文件时,如何监控scprsync的传输进度?
A:

  • scp:本身不显示进度,可通过pv工具包装:
    ssh user@remote "cat /path/to/large_file.zip" | pv > /local/path/large_file.zip
  • rsync:添加--progress选项实时显示传输进度:
    rsync -avz --progress user@remote:/path/to/large_file.zip /local/path/

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/465363.html<

(0)
运维的头像运维
上一篇2025-11-13 20:10
下一篇 2025-11-13 20:14

相关推荐

  • scp命令如何带密码传输文件?

    在使用SCP(Secure Copy Protocol)命令进行文件传输时,若需通过密码认证而非密钥对,需结合sshpass工具实现自动化输入密码,以下是详细操作步骤及注意事项:基础语法与环境准备SCP命令的基本语法为scp [选项] 源文件 目标地址,而带密码传输需先安装sshpass,在Linux系统中,可……

    2025-11-18
    0
  • Unix拷贝文件命令有哪些?

    在Unix操作系统中,文件拷贝是日常管理和维护任务中的基础操作,掌握不同的拷贝命令及其使用场景对于提高工作效率至关重要,Unix系统提供了多种拷贝文件的工具,包括cp、dd、tar、rsync等,每个命令都有其独特的功能和适用场景,本文将详细介绍这些命令的用法、参数选项以及实际应用案例,帮助用户根据需求选择最合……

    2025-11-18
    0
  • shell移动文件命令有哪些?

    shell移动文件命令是Linux和Unix-like操作系统中非常基础且常用的操作,它允许用户将文件或目录从一个位置移动到另一个位置,同时也可以用于重命名文件或目录,在shell中,最常用的移动文件命令是mv命令,mv是”move”的缩写,其功能强大且灵活,能够满足日常文件管理的各种需求,mv命令的基本语法结……

    2025-11-17
    0
  • SSH命令如何下载文件?

    SSH(Secure Shell)是一种加密的网络协议,常用于远程登录和管理服务器,同时也支持文件传输功能,通过SSH命令下载文件,用户可以在本地计算机与远程服务器之间安全地传输数据,避免数据在传输过程中被窃取或篡改,本文将详细介绍如何使用SSH命令下载文件,包括基本语法、常用参数、不同场景下的应用方法以及注意……

    2025-11-13
    0
  • Linux中cp命令如何高效复制文件?

    Linux中的cp命令是文件和目录管理中最基础且使用频率最高的命令之一,其核心功能是在Linux系统中复制文件或目录,无论是日常运维、系统管理还是开发工作,cp命令都扮演着不可或缺的角色,本文将详细介绍cp命令的基本语法、常用选项、高级用法以及实际应用场景,帮助用户全面掌握这一工具,cp命令的基本语法结构为cp……

    2025-11-09
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注