在 Linux 上安全传输文件的 14 个SCP 命令示例


在 Linux 上安全传输文件的 14 个SCP 命令示例

文章插图
 
SCP(安全复制,Secure Copy)是 linux 和 Unix 之类的系统中的命令行工具,用于通过网络安全地跨系统传输文件和目录 。-- Pradeep Kumar(作者)
SCP( 安全复制(Secure Copy))是 Linux 和 Unix 之类的系统中的命令行工具,用于通过网络安全地跨系统传输文件和目录 。当我们使用 scp 命令将文件和目录从本地系统复制到远程系统时,则在后端与远程系统建立了 ssh 连接 。换句话说,我们可以说 scp 在后端使用了相同的 SSH 安全机制,它需要密码或密钥进行身份验证 。
在本教程中,我们将讨论 14 个有用的 Linux scp 命令示例 。
scp 命令语法:
# scp <选项> <文件或目录> 用户名@目标主机:/<文件夹># scp <选项> 用户名@目标主机:/文件 <本地文件夹>scp 命令的第一个语法演示了如何将文件或目录从本地系统复制到特定文件夹下的目标主机 。
scp 命令的第二种语法演示了如何将目标主机中的文件复制到本地系统中 。
下面列出了 scp 命令中使用最广泛的一些选项,
  • -C 启用压缩
  • -i 指定识别文件或私钥
  • -l 复制时限制带宽
  • -P 指定目标主机的 ssh 端口号
  • -p 复制时保留文件的权限、模式和访问时间
  • -q 禁止 SSH 警告消息
  • -r 递归复制文件和目录
  • -v 详细输出
现在让我们跳入示例!
示例:1)使用 scp 将文件从本地系统复制到远程系统【在 Linux 上安全传输文件的 14 个SCP 命令示例】假设我们要使用 scp 命令将 jdk 的 rpm 软件包从本地 Linux 系统复制到远程系统(172.20.10.8),请使用以下命令,
[root@linuxtechi ~]$ scp jdk-linux-x64_bin.rpm root@linuxtechi:/optroot@linuxtechi's password:jdk-linux-x64_bin.rpm 100% 10MB 27.1MB/s 00:00[root@linuxtechi ~]$上面的命令会将 jdk 的 rpm 软件包文件复制到 /opt 文件夹下的远程系统 。
示例:2)使用 scp 将文件从远程系统复制到本地系统假设我们想将文件从远程系统复制到本地系统下的 /tmp 文件夹,执行以下 scp 命令,
[root@linuxtechi ~]$ scp root@linuxtechi:/root/Technical-Doc-RHS.odt /tmproot@linuxtechi's password:Technical-Doc-RHS.odt 100% 1109KB 31.8MB/s 00:00[root@linuxtechi ~]$ ls -l /tmp/Technical-Doc-RHS.odt-rwx------. 1 pkumar pkumar 1135521 Oct 19 11:12 /tmp/Technical-Doc-RHS.odt[root@linuxtechi ~]$示例:3)使用 scp 传输文件时的详细输出(-v)在 scp 命令中,我们可以使用 -v 选项启用详细输出 。使用详细输出,我们可以轻松地发现后台确切发生了什么 。这对于调试连接、认证和配置等问题非常有用 。
root@linuxtechi ~]$ scp -v jdk-linux-x64_bin.rpm root@linuxtechi:/optExecuting: program /usr/bin/ssh host 172.20.10.8, user root, command scp -v -t /optOpenSSH_7.8p1, OpenSSL 1.1.1 FIPS 11 Sep 2018debug1: Reading configuration data /etc/ssh/ssh_configdebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.confdebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.configdebug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *debug1: Connecting to 172.20.10.8 [172.20.10.8] port 22.debug1: Connection established.…………debug1: Next authentication method: passwordroot@linuxtechi's password:示例:4)将多个文件传输到远程系统可以使用 scp 命令一次性将多个文件复制/传输到远程系统,在 scp 命令中指定多个文件,并用空格隔开,示例如下所示
[root@linuxtechi ~]$ scp install.txt index.html jdk-linux-x64_bin.rpm root@linuxtechi:/mntroot@linuxtechi's password:install.txt 100% 0 0.0KB/s 00:00index.html 100% 85KB 7.2MB/s 00:00jdk-linux-x64_bin.rpm 100% 10MB 25.3MB/s 00:00[root@linuxtechi ~]$示例:5)在两个远程主机之间传输文件使用 scp 命令,我们可以在两个远程主机之间复制文件和目录,假设我们有一个可以连接到两个远程 Linux 系统的本地 Linux 系统,因此从我的本地 Linux 系统中,我可以使用 scp 命令在这两个系统之间复制文件,
命令语法:
# scp 用户名@远程主机1:/<要传输的文件> 用户名@远程主机2:/<文件夹>示例如下:
# scp root@linuxtechi:~/backup-Oct.zip root@linuxtechi:/tmp# ssh root@linuxtechi "ls -l /tmp/backup-Oct.zip"-rwx------. 1 root root 747438080 Oct 19 12:02 /tmp/backup-Oct.zip示例:6)递归复制文件和目录(-r)在 scp 命令中使用 -r 选项将整个目录从一个系统递归地复制到另一个系统,示例如下所示:
[root@linuxtechi ~]$ scp -r Downloads root@linuxtechi:/opt使用以下命令验证 Downloads 文件夹是否已复制到远程系统,


推荐阅读