跳转至

Scp的使用

SCP(Secure Copy Protocol)是一个用于在本地计算机和远程计算机之间安全传输文件的协议,基于SSH(Secure Shell)协议,能够实现加密、认证和数据完整性保护。它是Linux/Unix系统中常用的文件传输工具,也支持在不同操作系统之间进行文件传输。

SCP基本用法

SCP的基本语法格式如下:

scp [参数] [源路径] [目标路径]
  • 源路径:可以是本地文件路径或远程服务器上的文件路径,格式为 [用户名@主机地址:文件路径]
  • 目标路径:可以是本地路径或者远程服务器上的路径,格式为 [用户名@主机地址:文件路径]

常见操作

  1. 从本地复制文件到远程主机
scp /path/to/local/file username@remote_host:/path/to/remote/directory
  • /path/to/local/file:本地文件路径。
  • username@remote_host:远程主机的用户名和IP地址或域名。
  • /path/to/remote/directory:远程主机上存放文件的目标路径。

例子:

scp myfile.txt user@192.168.1.100:/home/user/documents/

这条命令将 myfile.txt 文件从本地复制到远程主机 192.168.1.100 上的 /home/user/documents/ 目录。

  1. 从远程主机复制文件到本地
scp username@remote_host:/path/to/remote/file /path/to/local/directory

例子:

scp user@192.168.1.100:/home/user/file.txt /home/localuser/Desktop/

这条命令将远程主机 192.168.1.100 上的 /home/user/file.txt 文件复制到本地的 /home/localuser/Desktop/ 目录。

  1. 复制整个目录

要复制整个目录,可以使用 -r 参数,这代表递归复制整个目录及其内容。

scp -r /path/to/local/directory username@remote_host:/path/to/remote/directory

例子:

scp -r /home/localuser/myfolder user@192.168.1.100:/home/user/backup/

这条命令将本地的 myfolder 目录及其所有文件和子目录复制到远程主机上的 /home/user/backup/ 目录。

  1. 从本地复制目录到远程主机
scp -r /path/to/local/directory username@remote_host:/path/to/remote/directory

例子:

scp -r /home/localuser/myfolder user@192.168.1.100:/home/user/backup/

这条命令将本地的 myfolder 目录复制到远程主机 192.168.1.100 上的 /home/user/backup/ 目录。

  1. 指定端口进行连接

如果远程服务器的 SSH 服务使用非标准端口(默认是22),你可以使用 -P 参数来指定端口号。

scp -P 2222 /path/to/local/file username@remote_host:/path/to/remote/directory

例子:

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

这条命令通过 SSH 的 2222 端口将 myfile.txt 从本地复制到远程主机。

  1. 限制带宽使用

使用 -l 参数可以限制 SCP 的带宽,单位是 Kbit/s(千比特每秒)。

scp -l 500 /path/to/local/file username@remote_host:/path/to/remote/directory

例子:

scp -l 1000 myfile.txt user@192.168.1.100:/home/user/

这条命令将 myfile.txt 文件复制到远程主机,并将带宽限制在1000 Kbit/s。

  1. 显示详细输出

使用 -v 参数可以启用调试模式,显示详细的操作过程,适合调试和排查问题。

scp -v /path/to/local/file username@remote_host:/path/to/remote/directory

例子:

scp -v myfile.txt user@192.168.1.100:/home/user/

这条命令会显示 SCP 连接、身份验证、传输等过程的详细信息。

SCP常见参数

  • -r:递归复制整个目录。
  • -P port:指定 SSH 连接的端口号(注意:这是大写的 P,不是小写)。
  • -v:启用详细模式,显示更多调试信息。
  • -C:启用压缩,适用于大文件传输。
  • -l rate:限制传输带宽,单位为 Kbit/s。
  • -q:启用安静模式,不显示任何输出(适用于脚本)。
  • -i identity_file:指定私钥文件进行身份验证。

例子汇总

  • 将本地文件传输到远程服务器:
scp file.txt user@192.168.1.100:/home/user/
  • 从远程服务器下载文件到本地:
scp user@192.168.1.100:/home/user/file.txt /home/localuser/
  • 将整个目录从本地上传到远程服务器:
scp -r myfolder user@192.168.1.100:/home/user/
  • 将文件从远程服务器下载到本地,并指定端口:
scp -P 2222 user@192.168.1.100:/home/user/file.txt /home/localuser/
  • 限制带宽:
scp -l 500 myfile.txt user@192.168.1.100:/home/user/
  • 启用调试模式,查看详细信息:
scp -v myfile.txt user@192.168.1.100:/home/user/

SCP与SFTP的区别

SCP和SFTP都基于SSH协议用于安全文件传输,但它们有以下区别:

  1. SCP:更适合快速传输单个文件或目录,命令行简单,适合快速复制文件,不支持断点续传和文件管理(如重命名、删除等)。
  2. SFTP:提供更丰富的文件管理功能,支持断点续传、目录列表、文件删除等,但需要更复杂的命令和交互式操作。

SCP的安全性

  • SCP使用SSH加密传输数据,确保数据的安全性和完整性。
  • 使用SSH密钥进行身份验证比密码更安全。
  • SCP确保数据传输过程中的机密性、防篡改和认证。

通过了解以上内容,你应该能够熟练使用SCP进行文件传输任务。如果需要更复杂的文件管理功能,可以考虑使用SFTP。