下班前领导忽然要求我将客户的日志服务器上一些日志拷贝到测试服务器中,不过领导只提供给我FTP的连接方式,很明显就是要我用FTP方式去做啦

一般来说FTP批量下载也就上网随便找个脚本的事,但是却成了我疯狂踩坑的开始

1、mget命令完全不能用

首先,为了保证命令是可以正常执行的,我们先连接FTP服务器,并跳转到某个文件夹下,执行以下命令:

mget *

一般来说,这时候弹出下载提示只需要回车即可下载,然而我这次却深深的感觉到了这个命令的恶意

 mget -rwxr-xr-x 1 user group         154519 Jan 02 07:30 20190101180001.txt?
227 Entering Passive Mode(192,168,24,158,7,170).
550 "/log/2019/01/-rwxr-xr-x 1 user group 154519 Jan 02 07:30 20190101180001.txt": Directory not found.

excuse me?

为什么你的文件路径会在文件名前出现文件属性???

我就不信邪了,既然都是txt格式保存的日志那我就只取.txt的,我就不信还有问题

ftp> mget *.txt
"/log/2019/01/*.txt": Directory not found.

卧槽,别这么打脸好吧!难道是FTP服务器挂了?于是用get命令试了一下,然而...

ftp> get 20190131160001.txt
local: 20190131160001.txt remote: 20190131160001.txt
227 Entering Passive Mode(192,168,24,158,18,227).
150 Opening BINARY mode data connection for file transfer.
226 Transfer complete.
1540 bytes received in 2.39 secs (0.65 Kbytes/sec)

很明显,FTP服务器没有任何问题,get命令可以执行,mget出错是什么鬼

行行行,你赢了,mget不行我换个方式可以了吧。

2.wget下载失败

既然mget有问题,那我们就换一个方法,但是curl不支持递归下载,那我们就选择常见的wget来吧

[root@localhost ~]# wget ftp://user:PASSWORD@192.168.24.158/log/2019/02/20190201180001.txt
--2019-02-27 15:37:42-- ftp://user:*password*@192.168.24.158/log/2019/02/20190201180001.txt
Connecting to 192.168.1.1:8080... connected.
Proxy request sent, awaiting response...

看起来好像没问题了,响应可能需要一点时间吧,等等就好了(于是等到了地老天荒)

还等啥啊!局域网响应哪有这么久的!

3.虚拟机执行以上命令,找到原因

以上两个常用方法都失败了,那会不会是网络问题呢?于是我到我自己的虚拟机上执行这这几条命令,结果mget得到的结果是一样的,但wget却可以成功下载。

那么问题就很明显了,mget获取文件名的时候,十有八九是FTP服务器将文件属性和文件名合并成一个字符串发送到客户端,所以会出现前面的问题,要是有哪个大佬知道这个问题的原因或者解决方法的话麻烦留个言。

那么wegt失败的原因是什么呢?

仔细观察响应信息之后,我才忽然注意到怎么wget的时候把192.168.1.1作为代理服务器了,让我一度以为是被网关给拦截了,于是加上了参数--no-proxy

wget -r -nH --proxy=none ftp://user:PASSWORD@192.168.24.158/log/2019/02/* 

哇,终于下载成功了,是哪个混蛋设置了默认代理,还代理到网关去了!

记一次FTP下载踩坑的故(shi)事(gu)的更多相关文章

  1. 记一次kubernetes驱逐踩坑

    最近在公司的线上服务器上发现了一个现象: 将某个node的kubelet短暂的停掉之后,其上的pod马上会被驱逐,这让笔者大吃一惊,印象之中,停掉kubelet后,该node会变为NotReady状态 ...

  2. 记一次pm2的踩坑

    1.问题: 公司采用了自动发布平台,最近突然发现一个问题,上线完成后服务是能正常访问的,但是有一个节点访问的时候每两次中总是有一次404,通过nginx的access日志分析发现第一次正常访问有一次g ...

  3. 记一次ftp服务器搭建走过的坑

    记一次ftp服务器搭建走过的坑 1.安装 ①下载 wget https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz #要FQ ②解压 ta ...

  4. windows container 踩坑记

    windows container 踩坑记 Intro 我们有一些服务是 dotnet framework 的,不能直接跑在 docker linux container 下面,最近一直在折腾把它部署 ...

  5. 十年老苹果(A1286)强升Catalina及Win10踩坑记(续)

    背景 自上次发布十年老苹果(A1286)强升Catalina及Win10踩坑记以来,因为后半部分-----系统安装上的细节描述过于简略,一些朋友在安装过程中总是又遇到坑,由此特意详述这一过程,让园友少 ...

  6. WinUI 3 踩坑记:从创建项目到发布

    本文是 WinUI 3 踩坑记 的一部分,该系列发布于 GitHub@Scighost/WinUI3Keng,若内容出现冲突以 GitHub 上的为准. 创建项目 现在 WinUI 3 的入门体验比刚 ...

  7. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

  8. Spark踩坑记——数据库(Hbase+Mysql)

    [TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...

  9. 记jQuery.fn.show的一次踩坑和问题排查

    最近很少已经很少用jQuery,因为主攻移动端,常用Zepto,其实很多细节和jQuery并不一样.最近又无意中接触到了PC的需求和IE6, 使用了jQuery,刚好踩坑了,特意记录一下. 本文内容如 ...

随机推荐

  1. jqGrid方法整理

    一.colModel 表体结构配置 name 必要的属性,具有唯一标识性,如在弹出的editform窗体中,将作为input的name属性 index        为排序用,最方便的是设为数据库字段 ...

  2. accecc2010入门,语文

    accecc2010入门 数据库:存放数据并处理的仓库. access2010数据库(扩展名为accdb,改名时不能删扩展名): 1,功能区:代替了菜单栏和工具栏的功能,不用四处查找命令.在窗口下的顶 ...

  3. iOS-swift-枚举和结构体

    1.枚举 使用关键字 enum 创 建枚举. 枚举默认起始值为 0,可以自定义起始值. 在枚举中可以定义方法,和类中定义的一样. 使用关键字 rawValue 访问当前枚举的值. enum Rank: ...

  4. C#多线程进度条

    public class ZyjProgressBar : System.Windows.Forms.ProgressBar { //用于跨线程访问控件的委托 private delegate voi ...

  5. jquery拖拽排序,针对后台列表table进行拖拽排序(超实用!)

    现在很多后台列表为了方便均使用拖拽排序的功能,对列表进行随意的排序. 话不多说 ,我在网上找了一些demo,经过对比,现在把方便实用的一个demo列出来,基于jqueryUI.js 先上html代码, ...

  6. Java基于jdbc链接mysql数据库步骤示列

    用JDBC来链接MYSQL数据库,基本步骤都大同小异,只不过不同的数据库之间的URL地址有些不同.其基本步骤可分为以下几点: 1.加载相应的数据库的JDBC驱动程序. 2.利用驱动管理器DriverM ...

  7. spring注入bean的五种方式

    1.属性注入 2.构造方法注入 3.静态工厂注入 package com.voole.factorybeans; import com.voole.beans.TestBean; public cla ...

  8. Android 通过接口的方式去调用服务里面的方法

    public class MainActivity extends AppCompatActivity { private MyConn conn; private Iservice myBinder ...

  9. 解压war包

    unzip cat-alpha-3.0.0.war -d /tmp/test 说明:-d指定解压的路径和文件,文件名不存在会自动创建

  10. PAT1137

    题意 一个学生的成绩由上机,期中,期末共3部分构成,现要求找出有资格获得证书的同学们. 证书获得者要求:上机分至少200,最终成绩及格. 最终成绩的生成规则:若期中分>期末分,则f = 期中 * ...