在Linux系统中,安全高效地传输文件是系统管理与运维的常见任务。SCP(Secure Copy Protocol)作为基于SSH协议的内置工具,是跨系统文件拷贝的可靠选择。它不仅提供数据加密,还支持端口指定、密钥认证、目录递归及带宽限制等高级功能。本文将详细解析SCP的核心使用方法。 SCP命令基
在Linux系统中,安全高效地传输文件是系统管理与运维的常见任务。SCP(Secure Copy Protocol)作为基于SSH协议的内置工具,是跨系统文件拷贝的可靠选择。它不仅提供数据加密,还支持端口指定、密钥认证、目录递归及带宽限制等高级功能。本文将详细解析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服务未使用默认22端口,需通过-P选项指定端口号。该选项须置于源路径之前。
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. 使用特定密钥文件认证
通过-i选项指定密钥文件,常与-P组合使用: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选项限制带宽占用,单位为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工具。
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排除所有.tmp文件并指定SSH端口:rsync -a vz --exclude='*.tmp' --rsh='ssh -p 2222' ./data/ user@192.168.1.100:/backup/
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述