Linux 中的 SCP 命令:如何使用它,并举例
如果您正在寻找该领域的工作,拥有安全传输数据等基本技能至关重要。
scp
(安全复制)命令使用 SSH 将数据从一台主机传输到另一台主机,并使用 SSH 相同的身份验证和安全性。但是,该命令依赖 SSH 进行数据传输,需要 ssh 密钥或密码才能在远程系统上进行身份验证。
使用 scp
传输数据时,文件和密码都会加密,因此任何窥探流量的人都不会获取任何敏感信息。因此,这是在网络上传输数据的最安全的方法之一。
Linux 中的 scp
命令有 3 种使用方式:
- 从远程服务器复制到本地计算机。
- 另外,从本地计算机复制到远程服务器。
- 从远程服务器复制到另一远程服务器。
SCP 命令语法
scp
命令的语法为:
scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
scp
-P
:指定服务器SSH端口-p
:保留文件的权限、模式和访问时间(注意小写)-q
:安静模式,不显示进度或消息-C
:传输时压缩数据-r
:递归 - 包括子目录及其内容-i
:身份文件或私钥
如何在Linux中使用SCP命令
将本地文件传输到远程服务器
将file.txt
从本地系统的当前目录复制到远程服务器的/tmp
目录。
scp file.txt user@remotehost:/tmp/
将文件从远程服务器传输到本地计算机
以下命令会将 /tmp/file.txt
从远程服务器复制到本地计算机的用户主目录下。
scp user@remotehost:/tmp/file.txt /home/user
递归地将本地目录传输到远程服务器
您可以在 Linux 中使用 scp
命令中的 -r
选项将整个目录从一个系统递归复制到另一个系统。
以下命令会将 /home/user/myfiles
目录从本地计算机复制到远程服务器的 /tmp
目录。
scp -r /home/user/myfiles user@remotehost:/tmp/
将目录从远程服务器递归传输到本地
以下命令将从远程服务器递归地将 /tmp/serverfiles
目录复制到本地计算机的用户主目录下。
scp -r user@remotehost:/tmp/serverfiles /home/user
将多个文件传输到远程服务器
在以下示例中,源主机中的文件 file1.txt
和 file2.txt
被复制到远程服务器的 /tmp
目录。
scp file1.txt file2.txt user@remotehost:/tmp/
通过启用压缩提高传输速度
您可以通过使用 -C
选项启用压缩来提高传输速度。它将自动允许在源主机上压缩并在目标主机上解压缩。
以下命令会将 /home/user/myfiles
目录从本地计算机递归复制到远程服务器的 /tmp
目录,并启用压缩。
scp -r -C /home/user/myfiles user@remotehost:/tmp/
指定不同的 SSH 端口
有时目标主机上的 SSH 端口会发生更改,因此在 Linux 中使用 scp 命令时,您可以使用 -P
选项指定 SSH 端口号。
以下命令将使用端口 2222 将 file.txt
从本地系统的当前目录复制到远程服务器的 /tmp
目录。
scp -P 2222 file.txt user@remotehost:/tmp/
保留文件的权限、模式和访问时间
使用 scp
命令中的 -p
选项可在复制文件时保留权限、访问时间和模式。
以下命令会将 file.txt
从本地系统的当前目录复制到远程服务器的 /tmp
目录,并保留其属性。
scp -p file.txt user@remotehost:/tmp/
在 SCP 命令中使用识别文件
在 SSH 会话期间使用 SSH 密钥而不是密码时,-i
标志允许您选择从中读取用于公钥身份验证的身份(私钥)的文件。
以下命令将使用 my_second_indent.pem
私有文件将 file.txt
从本地系统的当前目录复制到远程服务器的 /tmp
目录密钥文件。
scp -i my_second_indent.pem file.txt user@remotehost:/tmp/
结论
在本教程中,您学习了如何在 Linux 上使用 scp
命令复制文件和目录。这作为 FTP 的替代品特别有用,因为默认情况下 FTP 本质上是不安全的。
您可能还想设置基于 SSH 密钥的身份验证并在不输入密码的情况下连接到 Linux 服务器。
有关 Linux 中 scp
命令的更多信息,请参阅其手册页。