虚拟主机域名注册-常见问题服务器知识 → 操作系统

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

  一般来说,当你想把文件和文件夹从一台服务器/本地主机复制到另一台服务器/本地主机时,你需要使用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脚本




免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:bkook@qq.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
【 双击滚屏 】 【 推荐朋友 】 【 收藏 】 【 打印 】 【 关闭 】 【 字体: 】 
上一篇:Ubuntu中如何设置CTRL+ALT+DEL设置为任务管理器
下一篇:怎么设置在登陆Linux时自动启动Screen会话
  >> 相关文章
没有相关文章。
0

在线
客服

在线客服服务时间:9:00-18:00

客服
热线

19899115815
7*24小时客服服务热线

关注
微信

关注官方微信
顶部