菜鸟科技网

SSH 下载文件命令有哪些?

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

SSH 下载文件命令有哪些?-图1
(图片来源网络,侵删)

使用scp命令下载文件

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

常用选项及示例:

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

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

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

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

    SSH 下载文件命令有哪些?-图2
    (图片来源网络,侵删)
    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 下载文件命令有哪些?-图3
(图片来源网络,侵删)
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/
分享:
扫描分享到社交APP
上一篇
下一篇