概述
scp
(Secure Copy)是 Linux 系统中用于在本地主机与远程主机之间通过 SSH 协议安全传输文件的命令,它基于 SSH 进行加密传输,确保文件传输过程的安全性。- 资料合集:
https://pan.quark.cn/s/6fe3007c3e95
基本功能
在本地与远程主机之间、或两个远程主机之间复制文件/目录,支持跨服务器传输,且所有数据传输均经过加密。
常用格式
bash
# 本地文件复制到远程主机
scp [选项] 本地文件 远程用户@远程主机IP:远程路径
# 远程文件复制到本地
scp [选项] 远程用户@远程主机IP:远程文件 本地路径
# 复制目录(需加 -r 选项)
scp -r [选项] 本地目录 远程用户@远程主机IP:远程路径
scp -r [选项] 远程用户@远程主机IP:远程目录 本地路径
核心选项与示例
-
基本文件传输
-
本地 → 远程:
bashscp /home/user/file.txt root@192.168.1.100:/tmp/
(将本地
/home/user/file.txt
复制到远程主机192.168.1.100
的/tmp/
目录下,使用 root 用户登录) -
远程 → 本地:
bashscp root@192.168.1.100:/var/log/syslog /home/user/
(将远程主机的
/var/log/syslog
复制到本地/home/user/
目录)
-
-
传输目录(递归复制)
使用
-r
选项递归传输整个目录:bash# 本地目录 → 远程 scp -r /home/user/docs root@192.168.1.100:/data/ # 远程目录 → 本地 scp -r root@192.168.1.100:/data/backups /home/user/
-
指定端口(非默认SSH端口)
若远程主机的 SSH 端口不是默认的 22,使用
-P
选项指定端口:bashscp -P 2222 file.txt root@192.168.1.100:/tmp/
(注意是大写
-P
,与ssh
命令的-p
不同) -
压缩传输
使用
-C
选项在传输时压缩文件,节省带宽(适用于大文件):bashscp -C large_file.iso root@192.168.1.100:/data/
-
显示传输进度
使用
-v
选项显示详细的传输过程(包括进度):bashscp -v document.pdf user@example.com:~/
-
使用密钥认证(免密码)
若已配置 SSH 密钥登录,可直接免密码传输:
bashscp -i ~/.ssh/id_rsa file.txt user@remotehost:/path/
(
-i
指定私钥文件路径)
注意事项
- 传输前需确保远程主机已开启 SSH 服务(默认端口 22)
- 若远程路径是目录,需确保目录存在,否则会报错
- 传输大文件时,可配合
nohup
或screen
避免终端断开导致传输中断 scp
会覆盖目标路径中同名文件,且无提示,操作时需谨慎
scp
命令结合了 cp
命令的易用性和 SSH 的安全性,是服务器之间文件传输的常用工具,尤其适合脚本自动化和批量文件迁移场景。