scp 命令(secure copy)是一个在 Linux 和其他 Unix-like 系统中用于安全地复制文件和目录的命令行工具。它使用 SSH 协议来确保数据传输过程中的安全性,因此它不仅可以复制文件,还可以用于远程执行命令。

基本语法

scp [选项] [源文件] [目标文件]
  • 源文件:可以是本地文件、远程文件或者使用用户@远程主机:文件路径的格式。
  • 目标文件:可以是本地文件路径或远程主机路径。

常用选项

  • -r:递归复制整个目录。
  • -v:详细模式,显示传输过程中的详细日志。
  • -C:压缩标准输入/输出,以加快传输速度。
  • -P:指定远程主机的端口号。
  • -q:静默模式,不显示传输过程中的详细日志。
  • -p:保留文件的修改时间、访问时间和权限。

示例

  1. 从本地复制到远程主机
scp localfile.txt user@remotehost:/path/to/destination

这个命令会将本地的 localfile.txt 复制到远程主机的指定目录。

  1. 从远程主机复制到本地
scp user@remotehost:/path/to/remotefile.txt /local/directory

这个命令会从远程主机复制 remotefile.txt 到本地目录。

  1. 递归复制目录
scp -r /local/directory user@remotehost:/path/to/destination

使用 -r 选项可以递归地复制整个目录及其内容。

  1. 使用特定端口
scp -P 2222 localfile.txt user@remotehost:/path/to/destination

这个命令使用端口 2222 而不是默认的 22 端口进行文件复制。

  1. 压缩传输
scp -C localfile.txt user@remotehost:/path/to/destination

使用 -C 选项可以在传输过程中压缩文件,以加快传输速度。

注意事项

  • 确保远程主机的 SSH 服务正在运行,并且你有权限访问。
  • 如果是第一次连接到远程主机,系统可能会询问你是否信任该主机的公钥,你需要确认才能继续。
  • 确保你有足够的权限访问源文件和目标路径。
  • 使用 scp 命令时,如果涉及到密码输入,建议使用 SSH 密钥认证来提高安全性。

scp 是一个非常实用的工具,它结合了文件复制和安全传输的功能,非常适合在需要安全传输文件的场景中使用。