linux scp、ftp和sftp有什么区别,传输文件那个速度快

linux scp、ftp和sftp有什么区别,传输文件那个速度快,第1张

传输文件使用ftp协议速度快。

区别如下:

一、指代不同

1、scp:是用来进行远程文件拷贝的,是 SSH 中最方便有用的命令。

2、ftp: 是 TCP/IP 协议组中的协议之一。

3、sftp:安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。

二、使用方式不同

1、scp:scp 在需要进行验证时会要求你输入密码或口令。

2、ftp:FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。

3、sftp:为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。

三、特点不同

1、scp:数据传输使用 ssh,并且和ssh 使用相同的认证方式,提供相同的安全保证 。

2、ftp:下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。

3、sftp:SFTP本身没有单独的守护进程,必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复 *** 作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。

参考资料来源:百度百科-scp

参考资料来源:百度百科-FTP协议

参考资料来源:百度百科-sftp

使用WinSCP链接虚拟机后无法复制文件,可能是以下几个原因导致的:
1 权限设置问题:请确保您已经正确设置了虚拟机的用户权限,并且允许该用户进行文件复制等 *** 作。
2 文件格式问题:可能您所复制的文件格式不被虚拟机支持,例如虚拟机运行的是Linux系统,但您使用的文件格式是NTFS等Windows系统专用格式。此时需要将文件转换为Linux系统可支持的格式再进行复制。
3 防火墙阻挡:防火墙设置可能会阻挡WinSCP的访问,无法进行文件复制。
4 WinSCP版本问题:如果您的WinSCP版本过旧,可能无法正常连接虚拟机,建议升级WinSCP进行尝试。
针对以上问题可能的解决方法如下:
1 检查虚拟机用户权限,允许对应用户进行文件 *** 作;
2 确认文件格式是否符合虚拟机系统支持的格式;
3 关闭防火墙或将WinSCP添加至允许的程序列表中;
4 尝试升级WinSCP版本,或使用其他类似工具进行尝试。
此外,建议您在使用WinSCP时确保网络连接稳定,如果仍然存在问题,可以查看WinSCP的日志文件或尝试使用其他文件传输方式进行 *** 作。

第一种方式:

SecureCRT下
上传文件只需在shell终端仿真器中输入命令“rz”,即可从d出的对话框中选择本地磁盘上的文件,利用Zmodem上传到服务器当前路径下。
下载文件只需在shell终端仿真器中输入命令“sz 文件名”,即可利用Zmodem将文件下载到本地某目录下。
通过“File Transfer”可以修改下载到本地的默认路径。设置默认目录:options-->session options-->file transfer。


或者

下载文件存放位置在securtCRT中设置,位于:
英文版 options — session options — X/Y/Zmodem。
中文版 选项— 会话选项— X/Y/Zmodem。

第二种方式:用sftp
securecrt 按下ALT+P就开启新的会话 进行ftp *** 作。
输入:help命令,显示该FTP提供所有的命令
pwd:  查询linux主机所在目录(也就是远程主机目录)
lpwd: 查询本地目录(一般指windows上传文件的目录:我们可以通过查看”选项“下拉框中的”会话选项“,如图二:我们知道本地上传目录为:D:/我的文档)
ls:   查询连接到当前linux主机所在目录有哪些文件
lls:  查询当前本地上传目录有哪些文件
lcd:  改变本地上传目录的路径
cd:   改变远程上传目录
get:  将远程目录中文件下载到本地目录
put:  将本地目录中文件上传到远程主机(linux)
quit: 断开FTP连接

winscp只能远程复制目录。根据查询相关资料信息,winscp是一款本地与远程计算机间安全的复制文件的强大软件。WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。主要功能就是在本地与远程计算机间安全的复制文件。WinSCP可以执行所有基本的文件 *** 作,下载和上传。同时允许为文件和目录重命名、改变属性、建立符号链接和快捷方式。

日常工作中需要大量、频繁地使用ssh到服务器查看、拉取相关的信息或者对服务器进行变更。目前公司大量使用的shell,但是随着逻辑的复杂化、脚本管理的精细化,shell已经不满足日常需求,于是我尝试整合工作中的需求,制作适合的工具。 由于管理制度的缺陷,我以工作流程为核心思考适合自己的运维方式,提升工作效率,把时间留给更有价值的事情。 完整代码在最后,请大家参考。

生产:4000+物理服务器,近 3000 台虚拟机。

开发环境:python36、redhat79,除了paramiko为第三方模块需要自己安装,其他的直接import即可。

批量执行 *** 作是一把双刃剑。批量执行 *** 作可以提升工作效率,但是随之而来的风险不可忽略。

风险案例如下:

挂载很多数据盘,通常先格式化硬盘,再挂载数据盘,最后再写入将开机挂载信息写入/etc/fstab文件。在批量lsblk检查硬盘信息的时候发现有的系统盘在/sda有的在/sdm,如果不事先检查机器相关配置是否一致直接按照工作经验去执行批量 *** 作,会很容易造成个人难以承受的灾难。

在执行批量 *** 作时按照惯例:格式化硬盘->挂载->开机挂载的顺序去执行,假设有的机器因为某些故障导致格式化硬盘没法正确执行。在处理这类问题的时候通常会先提取出失败的ip,并再按照惯例执行 *** 作。运维人员会很容易忽略开机挂载的信息已经写过了,导致复写(这都是血和泪的教训)。

所以,为了避免故障,提升工作效率,我认为应当建立团队在工作上的共识,应当遵守以下原则:

当然,代码的规范也应当重视起来,不仅是为了便于审计,同时也需要便于溯源。我认为应当注意以下几点:

1、ssh no existing session,sftp超时时间设置:

在代码无错的情况下大量ip出现No existing session,排查后定位在代码的写法上,下面是一个正确的示例。由于最开始没考虑到ssh连接的几种情况导致了重写好几遍。另外sftp的实例貌似不能直接设置连接超时时间,所以我采用了先建立ssh连接再打开sftp的方法。

2、sftp中的get()和put()方法仅能传文件,不支持直接传目录:

不能直接传目录,那换个思路,遍历路径中的目录和文件,先创建目录再传文件就能达到一样的效果了。在paramiko的sftp中sftplistdir_attr()方法可以获取远程路径中的文件、目录信息。那么我们可以写一个递归来遍历远程路径中的所有文件和目录(传入一个列表是为了接收递归返回的值)。

python自带的os模块中的oswalk()方法可以遍历到本地路径中的目录和文件。

3、多线程多个ip使用sftpget()方法时无法并发。

改成多进程即可。

4、多个ip需要执行相同命令或不同的命令。

由于是日常使用的场景不会很复杂,所以借鉴了ansible的playbook,读取提前准备好的配置文件即可,然后再整合到之前定义的ssh函数中。


同时,我们还衍生出一个需求,既然都要读取配置,那同样也可以提前把ip地址准备在文件里。正好也能读取我们返回的执行程序的结果。

参数说明:

密码认证:

公钥认证:

可以配合 grep,awk 等命令精准过滤。

个人认为 Python 在初中级运维工作中的性质更像是工具,以提升工作效率、减少管理成本为主。可以从当前繁琐的工作中解脱出来,去 探索 更有价值的事情。python 本质上并不会减少故障的产生,所以在不同的阶段合理利用自身掌握的知识解决当前最重要的痛点,千万不要本末倒置。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13333794.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-16
下一篇 2023-07-16

发表评论

登录后才能评论

评论列表(0条)

保存