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/


四、注意事项

  1. scp 基于 SSH,所以需要远程主机开启 SSH 服务并可登录。
  2. 文件权限问题可能导致无法写入目标路径,要确保有写权限。
  3. 对大文件或目录建议加 -C 压缩选项。
  4. 如果需要频繁复制文件,也可以考虑使用 rsync,效率更高且支持断点续传。