作者介绍:一个在简历上没有标注精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图展示了预计更新的内容和当前进度(不定时更新)。
在上一章节中,我们已经对linux系统自带的日志服务有了初步的了解。接下来,我们将深入探讨一些高级命令,这些命令将从以下几个方面进行讲解:系统操作、系统查看和处理、Linux文本处理、逻辑判断、重定向、网络传输、服务启动以及文件句柄等。通过这些操作,您将能够更加熟练地操作Linux系统。具体内容将分为以下章节进行讲解:
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进阶命令-小结
随着对命令的深入学习和网络传输相关内容的介绍,一个常见的问题是如何将文件传输到服务器中?在windows和Linux之间,可以使用rz和sz进行文件传输,但在Linux系统内如何通过网络传输文件呢?
SCP
scp(secure copy)命令用于在本地计算机和远程计算机之间或两个远程计算机之间安全地复制文件或目录。它基于ssh协议,因此在传输过程中会加密数据以保护安全性。scp命令的语法和常用选项如下:
基本语法
scp [options] source destination
source和destination:指定要复制的文件或目录的路径,可以是本地路径或远程路径。使用示例:
- 从本地复制文件到远程计算机
scp localfile.txt username@remotehost:/remote/path/
将localfile.txt文件从本地计算机复制到远程计算机的/remote/path/目录中。
- 从远程计算机复制文件到本地
scp username@remotehost:/remote/path/remotefile.txt /local/path/
将远程计算机上的/remote/path/remotefile.txt文件复制到本地计算机的/local/path/目录中。
- 从本地复制目录到远程计算机
scp -r localdir/ username@remotehost:/remote/path/
使用-r选项递归复制localdir/目录及其内容到远程计算机的/remote/path/目录中。
- 从远程计算机复制目录到本地
scp -r username@remotehost:/remote/path/remotedir/ /local/path/
使用-r选项递归复制远程计算机上的/remote/path/remotedir/目录及其内容到本地计算机的/local/path/目录中。
- 从一个远程计算机复制文件到另一个远程计算机
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服务器之间进行数据传输,实际上,如果在Windows上安装了git命令,也可以使用此命令。这里的用户名可以省略,默认会读取当前登录系统的用户名。此外,这里还涉及到SSH端口的问题,与用户名一样,如果本地SSH端口和服务器一致,则可以省略。需要注意的是,如果目标端已存在文件,scp传输文件时会覆盖该文件。
scp的一个重要问题是没有考虑复制中断和增量复制的需求。如果在复制过程中出现意外,您需要重新开始复制;如果重复执行复制命令,它也会再次复制。