帮助中心

立即注册 咨询客服

当前位置:首页 > 帮助中心> 在Linux中使用SCP命令传输数据的15种方法

在Linux中使用SCP命令传输数据的15种方法

发布时间:2020年04月24日 08:54:21    来源: A5互联

如果您使用Linux CP命令复制文件和文件夹,那么您会发现SCP并没有太大不同。主要的附加参数是远程目标主机名。我们深入研究了在系统之间传输数据时有效使用SCP命令的最佳方法。

一般来说,当你想把文件和文件夹从一台服务器/本地主机复制到另一台服务器/本地主机时,你需要使用Samb(SMB)或NFS等文件共享服务。尽管它们很可靠,但在一次性复制文件时,使用它们是一个繁琐的过程。

那是因为你需要设置和配置一个Samba或NFS服务器。这这就需要理解和使用SCP Linux命令。

SCP (Secure Copy)命令是一个Linux实用程序,用于在主机之间安全地复制文件/目录。它使用SSH(安全Shell)传输和验证用户。因此,就像使用SSH一样,您需要知道远程主机的凭据。

如果您精通用于复制文件和文件夹的Linux CP命令,那么SCP并没有太大不同。唯一添加且有用的参数是远程目标主机名。看一下下面的命令。

scp file_name_to_copy username @ destination_host:destination_directory_path

在destination_host参数中,您需要输入远程主机的IP地址。如果您不知道如何找到它,请在终端上运行ipconfig命令。

在Linux中使用SCP命令的最佳方法

在本文中,我们将研究15个有用的SCP命令,您可以在与Linux系统的日常交互中使用它们。我们将使用Ubuntu 18.04 LTS Server服务器作为我们的远程主机。

1.将一个文件从本地计算机复制到远程主机

这是最直接的命令之一。我的本地计算机上有一个名为Hello.scp的文件,我们将其复制到远程服务器上。请参阅下面的命令:

scp Hello.scp tuts@192.168.83.132:/ home / tuts / FOSSLINUX

将单个文件从本地主机复制到远程主机

右侧是localhost本地主机,左侧是Ubuntu Server服务器。如果您是第一次这样做,则应该看到一条警告消息,询问您是否要继续连接,请键入“ yes”。您应该看到提示输入远程主机密码的提示。通过在远程主机上执行ls命令,我们看到我们已经成功复制了文件。

2.复制多个文件

在上一个命令中,我们看到了如何复制单个文件。要复制多个文件,请使用以下命令中的语法。我们将复制三个文件Hello1,Hello2和Hello3。

scp Hello1 Hello2 Hello3 tuts@192.168.83.132:/ home / tuts / FOSSLINUX

复制多个文件

通过在远程主机上运行ls命令,我们看到我们已经成功复制了文件。

3.递归复制目录

除了文件,我们还可以使用SCP将目录从本地计算机复制到远程目标。使用以下命令中的语法。我们将复制文件夹FOSSTUTS。

scp -r FOSSTUTS tuts@192.168.83.132:/ home / tuts / FOSSLINUX

使用SCP命令复制目录

注意,在整个目录上执行任何操作时,我们将需要包含-r参数,该参数表示递归。

4.复制具有详细输出的文件

在我们的SCP语法中包含一个详细参数会打印出SCP在后台执行的所有过程。让我们使用-v(详细)参数将多个文件复制到我们的远程主机。

scp Hello1 Hello2 Hello3 tuts@192.168.83.132:/ home / tuts / FOSSLINUX

复制带有详细输出的文件

从上图可以看到,我们在本地计算机上运行的命令有很多输出。它为您提供了有关当前执行的操作的所有详细信息。

5.在两个远程主机之间复制文件

假设您要管理多个远程服务器,并且要将文件从一台服务器复制到另一台服务器。查看下面命令中的语法。

scp tuts@192.168.43.96:/ home / tuts / FOSSLINUX / Hello1 tuts@192.168.83.132:/ home / tuts / FOSSLINUX

跨两个远程主机复制文件

我们正在将文件Hello1从主机192.168.43.96 复制到主机192.168.83.132。

6.压缩和复制文件

为了加快复制过程并节省带宽,可以使用-C参数压缩文件。数据将在本地计算机上即时压缩,并在远程主机上解压缩。请参见下面的语法。

scp -vC Hello1 tuts@192.168.83.132:/ home / tuts / FOSSLINUX

压缩和复制文件

我们包含了-v(详细)参数,以便您可以查看正在发生的情况。

7.管理带宽

将文件复制到远程主机可以解释为上载。如果上传带宽很高,则可能会影响在后台运行的其他进程。您可以使用-l参数限制在复制过程中使用的带宽。请参阅下面的命令。

scp -l 100 Hello1 tuts@192.168.83.132:/ home / tuts / FOSSLINUX

管理带宽

您分配的带宽以千字节为单位。因此,在上面的命令中,我们使用最大100Kb / s的速度进行复制过程。

8.使用自定义端口号

如上文所述,SCP使用SSH来执行文件复制过程。默认情况下,SSH在端口22上运行;但是,如果将远程服务器上的SSH服务器配置为在其他端口上运行,则可以在SCP命令中指定此端口。请参阅下面的命令。

scp -P 22 Hello1 tuts@192.168.83.132:/ home / tuts / FOSSLINUX

在SCP中使用自定义端口号

由于我尚未配置任何SSH服务器,因此本文的端口号保留为22。

9.复制和保留文件属性

如果要复制文件并保留权限,修改时间,访问时间等属性,请在SCP命令中使用-p参数。请参阅下面的命令。

scp -P 22 Hello1 tuts@192.168.83.132:/ home / tuts / FOSSLINUX

复制并保留文件属性

请注意,在此示例中,“ p”是小写字母,与使用自定义端口号不同。

10.使用-q参数抑制SCP输出

假设您不想打印SCP输出,错误通知,警告甚至进度表。您可以使用-q参数来实现它,该参数禁止显示所有SCP输出。

scp -q Hello1 tuts@192.168.83.132:/ home / tuts / FOSSLINUX

使用-q参数抑制SCP输出。

在上图中,唯一的SCP输出是密码提示。-q参数禁止所有其他输出。

11.使用SCP将文件从远程主机复制到本地计算机。

对于上面的大多数示例,我们将文件从本地计算机复制到远程服务器。现在,假设您要将文件从远程服务器复制到本地计算机。您应该在常规语法中对SCP命令进行一些调整。查看下面的命令。

scp tuts@192.168.83.132:/home/tuts/FOSSLINUX/serverFile.txt / home / tuts / FOSSLINUX

使用SCP将文件从远程主机复制到本地计算机。

通过在本地计算机上运行ls命令,我们可以看到“ serverFile.txt”已成功复制。

12.复制文件和目录而不使用密码

从上面的示例中,我们看到,每当需要复制文件时,都会提示您输入密码。我们可以通过生成在身份验证过程中使用的SSH密钥来跳过此步骤。

要生成SSH密钥,请使用以下命令。

ssh-keygen -t rsa

系统应生成一个SSH密钥。您可以从终端的输出中看到正在发生的过程。现在,我们需要将密钥复制到我们的远程主机以用于身份验证。使用下面的命令。

ssh-copy-id root@192.168.4.200

生成SSH密钥

现在,让我们尝试将文件从本地计算机复制到远程主机。

scp Hello1 tuts@192.168.83.132:/ home / tuts / FOSSLINUX

复制没有密码的文件

从上面的图片中,我们看到没有提示输入密码。

13.使用其他密码

SCP使用AES密码/加密来安全地复制文件。但是,可以使用-c参数指定其他密码方案。注意,c是小写字母,与压缩不同,其中c是大写字母。请参阅下面的命令。

scp -c aes128-gcm@openssh.com TESTFILE tuts@192.168.83.132:/ home / tuts / FOSSLINUX

使用其他密码

我们已经指定了要用作AES的加密方案。您还可以使用河豚鱼等其他食物。

scp -c blowfish TESTFILE tuts@192.168.83.132:/ home / tuts / FOSSLINUX

14.使用SSH密钥文件代替密码

SCP允许您使用-i参数和密钥文件来使用密钥文件而不是密码来完成身份验证过程。请参阅下面的命令。

scp -c privateKey.pem TESTFILE tuts@192.168.83.132:/ home / tuts / FOSSLINUX

使用密钥文件代替密码

15.使用SCP Shell脚本复制文件

假设您必须定期使用SCP命令,则可以编写一个Shell脚本来简化整个过程。在本文中,我们将编写一个脚本,该脚本从destfile.txt中读取目标主机。

destfile.txt文件

以下是我们的SCP脚本

echo "STARTING SCP SCRIPT"

echo

echo -e "Enter the path to the file you wish to copy:\c"

read file


for dest in `cat /tmp/destfile.txt`; do

scp -rC $file ${dest}:/tmp/


done

用“ .sh”保存文件。扩展名,因为它是bash脚本。在执行脚本之前,使用chmod命令使脚本可执行,如下图所示。

使用SCP Shell脚本

总结

这些是15个SCP实用示例,您可以应用这些示例来简化Linux系统的工作。