Linux scp如何快速传文件?

scp基础语法

scp [选项] 源文件路径 目标文件路径
  • 常用选项
    • -P:指定远程SSH端口(默认为22)
    • -r:递归复制整个目录
    • -C:启用压缩传输
    • -i:指定私钥文件(用于密钥认证)

核心操作场景

本地文件 → 远程服务器

scp /本地/文件.txt 用户名@远程IP:/远程/目录/

示例
将本地的report.pdf复制到远程服务器168.1.100/home/user/docs/目录:

scp ~/documents/report.pdf user@192.168.1.100:/home/user/docs/

远程服务器 → 本地

scp 用户名@远程IP:/远程/文件路径 /本地/目录/

示例
下载远程服务器0.113.5上的/var/log/app.log到本地当前目录:

scp admin@203.0.113.5:/var/log/app.log ./

远程服务器之间传输

scp 用户1@源IP:/文件路径 用户2@目标IP:/目标路径/

示例
serverA/data/backup.zip复制到serverB/backups/

scp john@192.168.1.10:/data/backup.zip mary@192.168.1.20:/backups/

递归复制目录(含子文件)

scp -r /本地/目录/ 用户名@远程IP:/目标路径/

示例
上传整个project/目录到远程:

scp -r ~/project/ dev@example.com:/opt/development/

高级配置技巧

  1. 指定非默认SSH端口
    若远程SSH端口为2222

    scp -P 2222 file.txt user@host:/path/
  2. 使用密钥认证免密码
    通过-i指定私钥:

    scp -i ~/.ssh/id_rsa_private file.txt user@host:/path/
  3. 启用传输压缩(大文件推荐)

    scp -C largefile.iso user@host:/backups/

注意事项

  1. 权限问题

    • 确保目标路径有写入权限(远程用户需具备/目标路径/的写权限)。
    • 本地文件需有读权限。
  2. 安全性

    • 所有传输均通过SSH加密,避免使用明文传输工具(如FTP)。
    • 推荐使用密钥登录而非密码(通过ssh-keygen生成密钥对)。
  3. 路径格式

    • 远程路径格式:用户名@主机:路径
    • 特殊字符(如空格)需用引号包裹:"file name.txt"

常见问题解决

  • 连接超时
    检查防火墙是否放行SSH端口,或确认远程IP是否正确:

    ssh user@host  # 先测试SSH连通性
  • Permission denied

    1. 确认远程目录权限:chmod 755 /目标路径
    2. 检查密钥权限:chmod 600 ~/.ssh/id_rsa
  • 命令无响应
    使用-v参数查看详细日志:

    scp -v file.txt user@host:/path/

scp是Linux系统管理员和开发者的核心工具之一,兼顾安全性与效率,通过掌握基础命令与场景化操作,可轻松实现跨服务器文件管理,对于更复杂的传输任务(如增量同步),可进阶学习rsync命令,但scp在简单场景中仍是首选方案。

引用说明基于Linux man-pages的scp文档(v8.4)及OpenSSH官方实践指南,确保信息的准确性与安全性,操作示例已在Ubuntu 22.04/CentOS 7环境中验证。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9973.html

(0)
酷番叔酷番叔
上一篇 2小时前
下一篇 2小时前

相关推荐

  • 为什么你的Linux文件结构总是混乱?

    在Linux系统中,文件结构是操作系统的核心骨架,它决定了文件、目录和设备的组织方式,无论您是系统管理员、开发者还是普通用户,理解如何查看文件结构都至关重要——它能帮助您高效管理系统资源、排查故障或部署应用,下面将详细介绍多种查看方法,从基础命令到高级工具,均附带实用示例,Linux采用层级树形结构,以根目录……

    2025年7月5日
    2100
  • 你最近一次感到幸福是什么时候?

    在Linux中,管道(Pipe)是一种强大的进程间通信机制,它允许一个进程的输出直接作为另一个进程的输入,理解其底层实现不仅能深化对Linux系统的认知,还能提升系统编程能力,下面将详细解释如何用C语言手动实现管道功能,管道的基本原理管道本质上是内核维护的环形缓冲区,通过两个文件描述符(fd)进行操作:fd[0……

    2025年7月26日
    800
  • 如何添加用户到组并保留原有组?

    将用户 alice 添加到 developers 用户组,同时确保她原有的其他组成员身份保持不变。

    2025年7月15日
    2000
  • 如何用init 3优化Linux服务器?

    进入init 3的三种方法方法1:使用telinit命令(推荐)sudo telinit 3原理:telinit是切换运行级别的标准命令,向init进程发送指令,效果:系统立即终止图形界面(如GNOME/KDE),切换到纯命令行终端,验证:执行who -r查看当前运行级别(显示run-level 3),方法2……

    2025年6月13日
    2300
  • 月入过万为何仍觉贫穷?

    在Linux环境中,C语言作为系统级编程的核心工具,其应用通常涉及两类需求:安装C语言开发环境或通过C程序获取Linux系统信息将详细解答这两种场景,确保技术准确性和实用性,所有方法均通过主流Linux发行版验证(如Ubuntu、CentOS),在Linux系统上安装C语言编译器若需在Linux中编写/运行C程……

    3天前
    400

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信