scp 是 Linux/Unix 系统下用于 在本地主机和远程主机之间安全复制文件或目录 的命令,它基于 SSH 协议,传输过程加密,安全可靠。下面给你整理一个全面指南。
一、基本语法
scp [选项] <源路径> <目标路径>
1. 复制本地文件到远程主机
scp /local/path/file.txt user@remote_host:/remote/path/
/local/path/file.txt→ 本地文件路径user@remote_host→ 远程用户名和 IP/域名/remote/path/→ 远程目录
2. 复制远程文件到本地
scp user@remote_host:/remote/path/file.txt /local/path/
3. 复制目录(递归)
scp -r /local/path/dir user@remote_host:/remote/path/
-r→ 递归复制整个目录
二、常用选项
| 参数 | 说明 |
|---|---|
-r | 递归复制目录 |
-P port | 指定远程 SSH 端口(注意大写 P) |
-p | 保留文件修改时间、访问时间和权限 |
-q | 静默模式,不显示传输进度 |
-C | 启用压缩,加快传输速度 |
-v | 显示详细信息(调试用) |
三、示例
1. 复制本地文件到远程服务器(默认 22 端口)
scp file.txt root@192.168.1.10:/home/root/
2. 复制远程文件到本地
scp root@192.168.1.10:/home/root/file.txt /home/localuser/
3. 复制目录到远程(带压缩)
scp -rC /home/localuser/mydir root@192.168.1.10:/home/root/
4. 使用非默认 SSH 端口
scp -P 2222 file.txt root@192.168.1.10:/home/root/
四、注意事项
scp基于 SSH,所以需要远程主机开启 SSH 服务并可登录。- 文件权限问题可能导致无法写入目标路径,要确保有写权限。
- 对大文件或目录建议加
-C压缩选项。 - 如果需要频繁复制文件,也可以考虑使用
rsync,效率更高且支持断点续传。