SCP(安全复制)是一个命令行实用程序,允许您在两个位置之间安全地复制文件和目录。
With scp
,您可以复制文件或目录:
- 从本地系统到远程系统。
- 从远程系统到本地系统。
- 在本地系统的两个远程系统之间。
当传输数据时scp
,文件和密码都经过加密,因此任何窥探流量的人都不会得到任何敏感信息。
在本教程中,我们将向您展示如何使用scp
通过实际示例和最常见 scp 选项的详细解释来了解命令。
SCP 命令语法#
在讨论如何使用之前scp
命令,让我们首先回顾一下基本语法。
The scp
命令语法采用以下形式:
scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
-
OPTION
- SCP选项例如密码、ssh 配置、ssh 端口、限制、递归复制等。
-
[user@]SRC_HOST:]file1
- 源文件。
-
[user@]DEST_HOST:]file2
- 目标文件
应使用绝对或相对路径指定本地文件,而远程文件名应包含用户和主机规范。
scp
提供了许多控制其行为各个方面的选项。最广泛使用的选项是:
-
-P
- 指定远程主机 ssh 端口。
-
-p
- 保留文件修改和访问时间。
-
-q
- 如果您想抑制进度条和非错误消息,请使用此选项。
-
-C
- 此选项强制scp
在将数据发送到目标计算机时对其进行压缩。
-
-r
- 这个选项告诉scp
递归复制目录。
在你开始之前#
The scp
命令依赖于ssh
用于数据传输,因此需要 ssh 密钥或密码才能在远程系统上进行身份验证。
冒号(:
)是如何scp
区分本地和远程位置。
为了能够复制文件,您必须至少拥有源文件的读取权限和目标系统的写入权限。
复制在两个系统上共享相同名称和位置的文件时要小心,scp
将覆盖文件而不发出警告。
传输大文件时,建议运行scp
里面的命令screen
or tmux会议。
在两个系统之间复制文件和目录scp
#
使用以下命令将本地文件复制到远程系统scp
命令#
要将文件从本地复制到远程系统,请运行以下命令:
scp file.txt remote_username@10.10.0.2:/remote/directory
Where file.txt
是我们要复制的文件的名称,remote_username
是远程服务器上的用户,10.10.0.2
是服务器IP地址。这/remote/directory
是将文件复制到的目录的路径。如果不指定远程目录,文件将被复制到远程用户主目录。
系统将提示您输入用户密码,然后传输过程将开始。
remote_username@10.10.0.2's password:
file.txt 100% 0 0.0KB/s 00:00
从目标位置省略文件名会复制具有原始名称的文件。如果您想以不同的名称保存文件,则需要指定新的文件名:
scp file.txt remote_username@10.10.0.2:/remote/directory/newfilename.txt
如果远程主机上的 SSH 监听的端口不是默认的 22,那么您可以使用-P
争论:
scp -P 2322 file.txt remote_username@10.10.0.2:/remote/directory
复制目录的命令与复制文件的命令非常相似。唯一的区别是您需要使用-r
递归标志。
要将目录从本地复制到远程系统,请使用-r
option:
scp -r /local/directory remote_username@10.10.0.2:/remote/directory
使用以下命令将远程文件复制到本地系统scp
命令#
要将文件从远程复制到本地系统,请使用远程位置作为源,使用本地位置作为目标。
例如复制一个名为file.txt
从具有 IP 的远程服务器10.10.0.2
运行以下命令:
scp remote_username@10.10.0.2:/remote/file.txt /local/directory
如果您还没有设置无密码 SSH 登录到远程计算机时,系统会要求您输入用户密码。
使用以下命令在两个远程系统之间复制文件scp
命令#
Unlike rsync,当使用scp
您不必登录其中一台服务器即可将文件从一台远程计算机传输到另一台远程计算机。
以下命令将复制该文件/files/file.txt
从远程主机host1.com
到目录/files
在远程主机上host2.com
.
scp user1@host1.com:/files/file.txt user2@host2.com:/files
系统将提示您输入两个远程帐户的密码。数据将直接从一台远程主机传输到另一台远程主机。
要通过发出命令的计算机路由流量,请使用-3
option:
scp -3 user1@host1.com:/files/file.txt user2@host2.com:/files
结论#
在本教程中,您学习了如何使用scp
复制文件和目录的命令。
您可能还想设置一个基于 SSH 密钥的身份验证无需输入密码即可连接到您的 Linux 服务器。
如果您经常连接到相同的系统,您可以通过在SSH 配置文件
.