游乐游手机版
首页/系统平台/文章详情

Linux SCP命令详解 远程文件传输与拷贝操作教程

时间:2026-05-10 14:41
在Linux系统管理与运维工作中,安全高效地传输文件是一项核心技能。SCP(Secure Copy Protocol)作为基于SSH协议的内置文件传输工具,以其加密传输、配置灵活的特性,成为系统管理员和开发者在服务器间同步数据的首选方案。它不仅支持端口自定义、密钥认证、目录递归复制,还能进行带宽限制

在Linux系统管理与运维工作中,安全高效地传输文件是一项核心技能。SCP(Secure Copy Protocol)作为基于SSH协议的内置文件传输工具,以其加密传输、配置灵活的特性,成为系统管理员和开发者在服务器间同步数据的首选方案。它不仅支持端口自定义、密钥认证、目录递归复制,还能进行带宽限制,功能全面且可靠。本文将深入解析SCP命令的详细使用方法,帮助你掌握远程文件拷贝的各类实战技巧。

Linux系统文件传输利器SCP用法 远程拷贝文件详细教程【教程】

一、SCP命令基本语法与传输方向

SCP命令的核心在于通过路径格式区分本地与远程位置,从而确定文件传输方向。本地路径为常规文件路径,远程路径则需遵循“用户名@主机地址:远程路径”的标准格式,末尾的冒号至关重要。文件是从本地推送到远程,还是从远程拉取到本地,完全由源路径和目标路径的写法决定。

1. 本地文件上传到远程服务器
将本地文件安全拷贝至远程主机指定目录:scp /path/to/local/file user@remote_host:/path/to/remote/directory/

2. 从远程服务器下载文件到本地
从远程主机获取文件并保存至本地目录:scp user@remote_host:/path/to/remote/file /path/to/local/directory/

3. 在远程服务器间中转传输文件
通过本地终端作为中转站,实现两台远程主机之间的文件拷贝:scp user1@host1:/file user2@host2:/destination/

二、指定SSH端口与使用密钥认证

为提高安全性,许多服务器会将SSH服务端口修改为非标准的22端口。此时,SCP命令需使用-P选项(大写P)明确指定端口号,且该选项需置于源路径之前。对于配置了密钥登录的服务器,则可结合-i选项指定私钥文件。

1. 向非标准端口服务器上传文件
假设目标服务器SSH端口为2222:scp -P 2222 file.txt user@192.168.1.100:/home/user/

2. 从特定端口下载文件并重命名
从指定端口拉取文件,并在本地保存时更改文件名:scp -P 2222 user@192.168.1.100:/var/log/syslog ./syslog_backup.log

3. 使用自定义密钥文件进行认证传输
通过指定密钥文件连接服务器并传输配置文件:scp -i ~/.ssh/id_rsa_custom -P 2222 config.conf user@192.168.1.100:/etc/

三、递归复制目录及子目录内容

SCP默认仅传输单个文件。如需完整拷贝整个目录及其内部所有子文件夹与文件,必须使用-r(递归)选项,否则会提示“not a regular file”错误。需注意目录路径末尾的斜杠会影响目标位置的存放结构。

1. 上传完整项目目录到服务器
递归上传本地项目文件夹至远程部署目录:scp -r ./my_project/ user@server.example.com:/opt/deploy/

2. 下载远程服务器配置目录进行备份
完整备份远程Nginx配置目录,保持原有层级结构:scp -r user@10.0.0.5:/etc/nginx/ ./backup_nginx/

3. 通过本地中转实现跨服务器目录迁移
将主机A的应用程序日志目录迁移至主机B的归档路径:scp -r user1@hostA:/var/log/app/ user2@hostB:/var/log/app_archive/

四、限制传输带宽与静默执行模式

传输大型文件时,为避免占满网络带宽影响其他服务,可使用-l选项(小写L)进行限速,单位为Kbit/s。此外,通过-q(安静)选项可关闭进度显示与提示信息,适用于自动化脚本中的静默传输场景。

1. 限速上传大型镜像文件
以不超过500 Kbit/s的速度上传系统ISO镜像:scp -l 500 ubuntu-22.04.iso user@192.168.1.200:/tmp/

2. 静默模式限速下载备份文件
无提示地以1 Mbit/s速度从备份服务器下载压缩包:scp -q -l 1000 user@backup.internal:/backup/data.tar.gz ./

3. 多参数组合实战:端口、密钥、限速与静默
综合使用多个选项完成安全、可控的文件传输:scp -q -P 2222 -i /keys/admin.key -l 2000 archive.zip user@172.16.0.10:/mnt/external/

五、文件过滤与避免覆盖的实用技巧

SCP命令本身未内置文件排除功能,但可借助Shell通配符实现基础过滤。默认情况下,SCP会直接覆盖目标路径同名文件。若需避免意外覆盖,可先通过SSH命令检测远程文件是否存在。对于更复杂的排除需求,推荐使用rsync工具,它兼容SCP语法且提供强大的过滤规则。

1. 仅传输特定扩展名的文件
使用通配符只上传当前目录下所有JPG图片文件:scp *.jpg user@192.168.1.100:/var/www/images/

2. 安全传输:避免覆盖远程已有文件
通过条件判断,仅在远程文件不存在时才执行拷贝操作:ssh user@192.168.1.100 'test ! -f /home/user/file.dat' && scp file.dat user@192.168.1.100:/home/user/

3. 使用rsync实现高级排除与同步
利用rsync排除所有临时文件,并通过指定端口进行同步备份:rsync -a vz --exclude='*.tmp' --rsh='ssh -p 2222' ./data/ user@192.168.1.100:/backup/

来源:https://www.php.cn/faq/2450885.html
上一篇Linux查看进程运行用户UID的ps命令详解与操作指南 下一篇Windows 11 语音转文字功能开启指南 提升文字录入效率
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
微软详解Win11时间点还原 默认每24小时创建恢复点
系统平台 · 2026-06-30

微软详解Win11时间点还原 默认每24小时创建恢复点

微软今日推送了最新的 6 月可选更新,并发布博客详细解读了 Win11 全新的“时间点还原”(Point-in-time restore)功能——这一功能本质上是对系统恢复体验的一次全面升级,旨在让用户更轻松地应对电脑故障。 微软表示,面向 Windows 11 客户端用户的“时间点还原”功能现已正

Win11 26H1六月可选更新KB5095091 优化放大镜改善装机体验
系统平台 · 2026-06-30

Win11 26H1六月可选更新KB5095091 优化放大镜改善装机体验

微软今天推送了Windows 11 26H1设备的6月可选更新KB5095091,安装完成后系统版本号会升级到Build 28000 2340。值得一提的是,这次更新并非面向所有设备,而是专门为搭载高通骁龙X2系列芯片的机型准备的——包括骁龙X2 Plus、X2 Elite和X2 Elite Ext

Win11六月可选更新KB5095093修复回收站弹窗异常
系统平台 · 2026-06-30

Win11六月可选更新KB5095093修复回收站弹窗异常

微软已悄然推送Windows 11六月可选更新,编号KB5095093。本次更新覆盖两个版本:24H2用户安装后版本号升级至Build 26100 8737,而25H2用户则更新至Build 26200 8737。 本次更新并非仅是小修小补,而是带来了多项实质性新功能。下面我们就来详细解析这些更新内

苹果macOS 27 Beta2封堵Siri AI跳过候补名单漏洞
系统平台 · 2026-06-30

苹果macOS 27 Beta2封堵Siri AI跳过候补名单漏洞

科技媒体 Cult of Mac 昨日(6月23日)发布博文指出,苹果在 macOS 27 Beta 2 更新中悄然封堵了一个此前可用的后门——用户曾能通过一条终端命令绕过候补名单,直接启用新版 Siri AI,如今这一方法已失效。 简要回顾一下:在 macOS 27 Beta 1 阶段,只需在 M

微软加速Win11 25H2推送 覆盖所有符合条件家用PC
系统平台 · 2026-06-30

微软加速Win11 25H2推送 覆盖所有符合条件家用PC

近日(6月23日),科技媒体 Windows Latest 发布了一则值得关注的动态:微软已进一步扩大 Windows 11 25H2 的推送范围,所有满足硬件要求、且不受 IT 部门管理的家庭版和专业版设备,现在均可顺利接收本次更新。 此次升级有一个显著特点——采用“启用包”(eKB)方式进行推送