虚拟主机域名注册-常见问题 → 服务器知识 → 操作系统 | ||||
一般来说,当你想把文件和文件夹从一台服务器/本地主机复制到另一台服务器/本地主机时,你需要使用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脚本
|
||||
>> 相关文章 | ||||
没有相关文章。 |