scp(Secure Copy)是用于在两台机器之间进行安全复制文件或目录的命令,通过 SSH 来加密传输数据。它可以传输本地文件到远程服务器,或者从远程服务器下载文件到本地,还支持两台远程服务器之间传输。

scp命令基本语法:

scp [选项] [源路径] [目标路径]

常用选项:

  • -r:递归复制,支持复制整个目录。
  • -P <port>:指定远程服务器的 SSH 端口(默认是 22)。
  • -C:压缩传输数据。
  • -v:显示详细的调试信息。
  • -i <identity_file>:指定 SSH 使用的私钥文件。

用法示例:

1. 从本地复制文件到远程服务器:

scp local_file user@remote_host:/path/to/destination
  • local_file:本地文件路径。
  • user:登录远程服务器的用户名。
  • remote_host:远程服务器的地址(可以是 IP 或域名)。
  • /path/to/destination:远程服务器上的目标路径。

2. 从远程服务器下载文件到本地:

scp user@remote_host:/path/to/remote_file /path/to/local_destination
  • /path/to/remote_file:远程服务器的文件路径。
  • /path/to/local_destination:本地存放文件的路径。

3. 复制整个目录(递归):

从本地到远程服务器:
scp -r local_directory user@remote_host:/path/to/destination
从远程服务器到本地:
scp -r user@remote_host:/path/to/remote_directory /path/to/local_destination

4. 通过指定端口号传输文件:

scp -P 2222 local_file user@remote_host:/path/to/destination

这里用 -P 2222 指代 SSH 端口为 2222 (注意是大写的 P,而不是小写)。

5. 使用私钥登录并传输文件:

scp -i /path/to/private_key.pem local_file user@remote_host:/path/to/destination

这里的/path/to/private_key.pem 是 SSH 的私钥文件。

6. 从一台远程服务器直接复制到另一台远程服务器:

scp user1@remote_host1:/path/to/file user2@remote_host2:/path/to/destination

这会绕过本地计算机,直接从 remote_host1 把文件发送到 remote_host2


实际场景中的常用示例:

a. 上传文件到远程服务器(默认端口 22):

scp file.txt root@192.168.1.100:/home/root/

b. 从远程服务器获取文件(指定端口):

scp -P 2222 root@192.168.1.100:/home/root/file.txt /home/user/

c. 上传目录文件:

scp -r /home/user/myproject root@192.168.1.100:/var/www/

d. 下载远程目录文件:

scp -r root@192.168.1.100:/var/www/ /home/user/myproject_copy/

如果你在使用 scp 时需要高效传输大量文件,可以考虑使用带压缩的选项:

scp -C local_file user@remote_host:/path/to/destination


在Linux中如何使用scp命令上传文件插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://choupangxia.com/2025/12/08/linux-scp-upload-file/