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