Linux进阶命令-scp
作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
经过上一章Linux日志的讲解,我们对Linux系统自带的日志服务已经有了一些了解。我们接下来将讲解一些进阶命令,主要从以下几个方面来讲解:一些系统操作,系统查看处理,Linux文本处理,逻辑判断,重定向,网络传输,服务启动,文件句柄等内容。通过这些操作,让你对Linux的操作更加得心应手,具体分成以下章节进行讲解:
Linux进阶命令-echo&date&alias
Linux进阶命令-top
Linux进阶命令-ps&kill
Linux进阶命令-sort&wc
Linux进阶命令-sed&split
Linux进阶命令-awk&uniq
Linux进阶命令-逻辑或&逻辑与
Linux进阶命令-重定向
Linux进阶命令-scp(本章节)
Linux进阶命令-rsync
Linux进阶命令-rsync-daemon
Linux进阶命令-nohup&screen
Linux进阶命令-lsof
Linux进阶命令-小结
随着命令的深入和网络介绍的相关信息,有一个问题如何把文件传输到服务器里面呢?在win到linux里面可以使用rz和sz进行文件传输,但是在linux里面如何通过网络传输文件呢?
SCP
scp
(secure copy)命令用于在本地计算机和远程计算机之间或两个远程计算机之间安全地复制文件或目录。它基于 SSH 协议,因此在传输过程中会加密数据以保护安全性。scp
命令的语法和常用选项如下:
基本语法
scp [options] source destination
-
source 和 destination:指定要复制的文件或目录的路径,可以是本地路径或远程路径。
使用示例
1. 从本地复制文件到远程计算机
scp localfile.txt username@remotehost:/remote/path/
将 localfile.txt
文件从本地计算机复制到远程计算机的 /remote/path/
目录中。
2. 从远程计算机复制文件到本地
scp username@remotehost:/remote/path/remotefile.txt /local/path/
将远程计算机上的 /remote/path/remotefile.txt
文件复制到本地计算机的 /local/path/
目录中。
3. 从本地复制目录到远程计算机
scp -r localdir/ username@remotehost:/remote/path/
使用 -r
选项递归复制 localdir/
目录及其内容到远程计算机的 /remote/path/
目录中。
4. 从远程计算机复制目录到本地
scp -r username@remotehost:/remote/path/remotedir/ /local/path/
使用 -r
选项递归复制远程计算机上的 /remote/path/remotedir/
目录及其内容到本地计算机的 /local/path/
目录中。
5. 从一个远程计算机复制文件到另一个远程计算机
scp username1@remotehost1:/remote/path/file.txt username2@remotehost2:/remote/path/
将 remotehost1
上的 /remote/path/file.txt
文件复制到 remotehost2
上的 /remote/path/
目录中。
说实话我都没用过这个复制方式。
常用选项
-
-r
:递归复制整个目录。 -
-P port
:指定远程主机的 SSH 端口(注意是大写的-P
,与ssh
的小写-p
不同)。 -
-i identity_file
:指定用于身份验证的私钥文件。 -
-q
:静默模式,不显示进度信息。 -
-C
:启用压缩,以提高传输速度(对于大文件或慢速网络连接可能有用)。 -
-o option
:传递选项给 SSH,例如-o StrictHostKeyChecking=no
来禁用主机密钥检查。
认证方式
scp
使用 SSH 协议进行认证,支持多种身份验证方式:
-
密码认证:在连接时输入 SSH 密码。
-
密钥认证:使用 SSH 密钥对进行无密码登录。可以通过
-i
选项指定私钥文件。
安全性
scp
的安全性来自于 SSH 协议,这包括:
-
数据加密:所有传输的数据都被加密,防止数据被窃听。
-
身份验证:使用密码或密钥进行身份验证,确保访问权限。
-
数据完整性:通过加密技术确保数据在传输过程中不被篡改。
总结
-
scp 主要用户两个Linux服务器进行数据传输,其实win如果安装了git命令也可以用这个命令。
-
这里的用户名其实是可以省略的,默认它会读取当前登录系统的用户名
-
其实这里还涉及到ssh端口的问题,当然和用户名一样,它也会使用本地的ssh端口,也就是如果本地ssh端口和服务器一致则可以省略。
4.scp传输文件,如果目标端是存在文件的,则会覆盖该文件。
5.scp有一个重要的问题就是没有考虑复制中断的问题,还有增量复制的问题,也就是复制过程中如果出现意外你得重新来复制;如果复制命令的重复执行,则它也会再次复制。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。