Hyper-v下Linux虚拟机的FTP传输资源解决办法

    由于linux环境下全新安装测试的需要,决定使用虚拟机来解决,正好win10 pro自带了Hyper-v 虚拟机,然后主机bios里开启虚拟指令支持,关闭hyper-v的uefi安全启动项,选择一个本地的ubuntu 20.04.6.iso当安装镜像,启动虚拟机。

     ubuntu 20.04虚拟机默认安装成功后,想从win10 本地向虚拟机传输文件,发现复制黏贴不可用,然后尝试用u盘,作为共享媒体挂载进去,没找到了挂载方法,网上那些文章,说在显示设置下拉有共享设置,好吧,对方是win10虚拟机里开win10系统的虚拟,而不是Linux,linux环境下没有这个选择,还有说u盘先要usb设备脱机,说实话,磁盘管理里根本没有u盘脱机的选择,只有硬盘可以,这些教程真的尝试过吗?根本就没有的选项,尝试右下角弹出u盘,但是hyper-v里还是无法添加u盘,折腾了老半天,可是我就是想简单的传输个文件到linux虚拟机里,不想折腾什么rdp远程usb直通之类的。

    然后放弃了这个想法,然后我决定通过FTP解决,步骤如下:

    【1】先给hyper-v 设置里, 启用网络,虚拟交换机,如下图:

 

选择Default switch模式就可以了,不建议勾选VLAN,否则可能导致问题.

  【2】 在win10本机上开启FTP服务器,我用的是自己开发的XFile服务器程序,如下图:

   

       这里会显示服务器的内网ipv4地址,这里是192.168.1.4,这个就是FTP服务器地址

    【3】 关键的一步来了,这里我载了一个跟头

      在linux虚拟机上,打开自己的主目录,也就是home目录下的用户子目录,然后右键菜单,打开命令行,这样,下载的ftp资源会存放在用户子目录下,

     这里的重点和误区,在默认的default switch模式下,win10是网关,因此,实际上虚拟机器可以访问网关192.168.1.4,但是网关是无法连接到虚拟服务器的,在这个模式下,port连接模式会失败,必须启用passive,而linux下的ftp命令行,默认是port模式,如果你到网络上去查找资料,你会发现基本全是错的离谱的,让你输入pasv来进入被动模式,错了,大错特错,这里是让ftp命令行程序进入被动模式,而不是发送一个pasv指令,因此正确的方法是输入本地指令passive,让ftp命令行进入被动模式; 此外,ftp命令行默认采用的是text模式传输文件,也就是tar二进制文件等会通通使用text模式传输,和Ftp file zilla client客户端几乎犯的是同一个错误,在这种模式下,\n会被转换成\r\n,二进制文件会损坏,大小都不一样了,因此必须强制ftp客户端使用二进制模式传输,也就是binary本地指令,我开始的时候就犯了这个错,以为ftp命令行默认就是二进制模式,结果是文本模式。

    因此,linux终端下ftp客户端访问win10下ftp服务器的操作次序如下:

    先登录 user xxxxxxxx

                pass xxxxxxxx

    然后立即输入 passive ,在尝试列表前必须先切换到被动模式,注意是passive,而不是网上那些垃圾教程里的pasv.

    然后,你就可以使用ls 或者dir等指令切换目录了,在使用get 获取服务器上的文件前,必须输入 binary 本地指令,让linux ftp命令行进入二进制模式传输,这样才能保证传输的文件的一致性。

   上传也是一样,网上很多文章关于hyper-v虚拟机下的命令行linux ftp操作都错到离谱,你真按那些所谓的教程去解决,估计头发没了还想不明白到底是哪里错了.

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值