当前位置:首页 » 文件传输 » FTP的实时性分析
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

FTP的实时性分析

发布时间: 2022-05-07 01:12:21

⑴ ftp的解读

、什么是FTP:文件传输协议原理

互联网文件传输协议(File Transfer Protocol ,FTP) 标准是在RFC959说明的。该协议定义了一个从远程计算机系统和本地计算机系统之间传输文件的一个标准。一般来说,传输文件的用户需要先经过认证以后才能登录网站,然后方能访问在远程服务器的文件。而大多数的FTP服务器往往提供一个GUEST的公共帐户来允许没有远程服务器的用户可以访问该FTP服务器。

一个FTP会话通常包括五个软件元素的交互。

用户接口 提供了一个用户接口并使用客户端协议解释器的服务
客户 PI 客户协议解释器,其项远程服务器协议机发送命令并且驱动客户数据传输过程
服务器PI 服务器协议解释器,响应客户协议机发出的命令并驱动服务器端数据传输过程
客户 DTP 客户数据传输过程,其负责完成和服务器数据传输过程及客户端本地文件系统的通信
服务DTP 服务器数据传输过程,其负责完成和客户数据传输过程及服务器端文件系统的通信

在RFC 959中,一般使用用户这个名词来指代客户。RFC 959定义了客户PI和服务器PI交互的方式和规范。用户接口与PI和DTP交互的机理都并不是协议标准的一部分。PI和DTP往往通常是在同一个程序模块中实现的。

在FTP会话中,一共会存在有两个独立的网络连接,一个是由两端的PI使用的,另一个是由两端的DTP使用的。PI之间的连接一般被称作控制连接(control connection),DTP之间的连接被称做数据连接(data connection)

使用TCP服务的控制和数据连接

通常情况下,FTO服务器监听端口号21来等待控制连接建立请求。而数据连接端口号的选择依赖于控制连接上命令。通常是客户发送一个控制消息来指定客户监听并等待服务器端发送数据连接建立请求的端口号。

对数据传输和控制命令传输来使用不同的独立连接有如下优点:两个连接可以选择不同的合适服务质量,如:对控制连接来说高需要更小的延迟时间,对数据连接来说需要更大的数据吞吐量;而且可以避免实现数据流中的命令的通明性及逃逸。

当传输建立时,总是由客户端首先发起。然而客户和服务器都可能是数据发送者。除了传输用户请求下载文件,数据传输过程同样在客户端请求列服务器端目录结构时建立。

1.命令选择

当一个传输建立时,一般通常需要指定四个方面的属性:

文件类型
该属性指定如何将文件的数据匹配成适于传输的格式,一共有四种可能的选择:

ASCII文件类型
在发送端,文件从本地文本文件格式转换为 NVT ASCII格式,每行结束有一个CR/LF对来标识。 在接收端,再被转换为本地的文本格式。

这说明了为什么Unix主机之间传输文本文件为何传输的数据量要大于文件的实际大小。若传输一段端或传输两端都不使用ASCII文本编码,则是应该由数据传输过程来实现本地编码和NVT ASCII 编码之间的转换。

EBCDIC文件类型
类似于ASCII,区别仅仅上使用EBCDIC字符编码

图象 (或二进制)文件类型
文件以本地传输内容传输,在远端以同本地完全相同的内容存储

本地文件系统
用在字节大小不是8位的环境下。没字节位数由发送者指定。

在实际应用中,只有ASCII和图象格式使用的较多。

格式控制
该属性是和将文本文件最后传送到打印设备相关的,其中有多种方式来实现将垂直格式信息编码到文件中,包括指示一个新页开始的方式。有如下方式可供选择:

无须打印格式控制,这是缺省值
Telnet打印控制,在telnet协议中定义的控制字符包含在数据流中。.
Fortran打印控制,
该属性在实际中很少使用。

结构
文件可以拥有内部结构,在传输中该结构被保留。由数据传输过程来负责在传输中的结构及本地结构之间相互匹配,有三种可能性:

文件结构
这实际上意味着文件被看作没有内部结构的连续的字节流。

记录结构
文件是有一系列记录组成的结构。这只适用于文本文件。

页面结构
也可以称做块结构。每一页都伴随一个页号来传输,从而以顺序的方式来完成传输。

页面结构很少在实际中遇到。记录结构也不是很常见。对于文本文件使用ASCII文件类型可以获得相同的效果。

传输模式
该属性可以取三个不同的值:

流模式
文件的以字节流的方式传输。

块模式
文件以一个块连接一个块的方式传输,每个块的开头都有一个头。

压缩模式
一个简单的运程长度压缩编码被应用,来压缩连续的相同的字节。

实际中,一般只有流模式被使用。而压缩一般通过使用各种其他的工具程序来获得。

当一次传输被建立,客户端一般指定一个或多个前面说明的属性。若服务器端不能支持某个选项,服务器将用一个错误信息来响应客户端,并不具有协商机制。

FTP提供了充足的命令来使用户和远程建立连接并访问远程文件系统。

2.命令格式

命令以NVT ASCII串的格式被传输。每个命令以三个或四个大写的NVT ASCII字符开始,后面带有选项参数和一个CR/LF对来标识命令结束

应答由三个NVT ASCII数字及一个选项消息组成。

一个长的应答也许会有多个消息组成,第一个消息的三个数字后带有一个破折号,最后的消息不带有破折号。中间的消息无须携带三个数字,但是如果带了三个数字,则也需要破折号。

下面是所有的命令的列表。带有星号的命令一般很少使用,所以往往在具体实现中不支持。

String Meaning
ABOR 放弃传输
*ACCT 某些系统将帐号和用户与文件系统相关联
*ALLO 为即将传送的文件分配空间。后面携带的参数来确定字节数
*APPE 将文件附加到已经存在的文件后面
CDUP 在远程系统上将当前目录切换到上级父目录
CWD 改变远程系统的工作目录
DELE 删除远程系统的文件
HELP 读取服务器的帮助信息,如:支持的命令的列表
LIST 在一个新建立的数据连接上发送当前工作目录下的文件名列表
MKD 创建目录
MODE 指定传输模式,可携带的参数是:S、B或 C.
NLST 在一个新建立的数据连接上发送一个当前目录下的“完全”的目录列表
NOOP 空操作,防止连接断掉
PASS 提供一个用户登录密码,必须立即跟随在USER命令后
*PASV 指定服务器数据传输过程监听等待客户端的数据连接连接建立请求
PORT 指定客户端监听等待服务器端建立的连接的端口号
PWD 显示服务器端的当前工作目录名
QUIT 退出登录并终止连接
*REIN 重新初始化,退出登录但是并不断开连接,后面必须随后发出一个新的USER命令
*REST 从服务器的一个标识处重新开始传输
RETR 从远程系统取回一个文件
RMD 删除一个目录
*RNFR 指定要被命名的文件的老的路径名,随后必须是一个RNTO命令
*RNTO 指定要被命名的文件的新的路径名
*SITE 站点特有的服务器提供的服务
*SMNT 结构加载,提供一个文件系统结构的远程系统路径名
*STAT 状态信息
STOR 上载一个文件到服务器上,若文件已经存在则覆盖
*STOU 上载一个文件到服务器上,不覆盖已经存在的文件
STRU 指定文件结构,参数可以是F、R或P.
*SYST 报告远程系统的操作系统类型
TYPE 指定文件类型,参数可以是A、E、I、L只有TYPE A和TYPE I常用

控制连接命令应答有如下形式:

Type Description
1yz 主动初步应答,在发送另一个命令以前等待另一个应答
2yz 主动最后应答,最后一个命令成功结束
3yz 主动中间应答,必须再发送一个命令
4yz 暂时被动应答,要求的动作当时不能完成,但可以重试
5yz 永久被动应答,要求的动作不能完成,不应该重试

"y"数字编码进一步的信息

Digit Meaning
0 语法错误
1 信息
2 连接状态
3 认证和记帐
4 保留
5 File s文件系统状态

下面是一些典型的消息:

Number Meaning
125 数据连接打开,传输开始
200 命令OK
331 用户名OK 需要输入密码
425 不能打开数据连接
452 错误写文件
500 语法错误-不可识别的命

具体的详细情况可以参见RFC

⑵ FTP与网络文件共享相比,有哪些优势特点

FTP相对于文件共享的优势
①完全基于网络,具有备网络文件的上传与下载特性。比如说断点续传,不受工作组与IP地址限制等。
②相比于文件共享的小范围局域网而言FTP不仅适用于局域网络而且也适用于广域网中文件的传输,更为可靠、灵活。
③数据的传输可以进行加密,更安全
但是,FTP延时太高,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登陆进程。不是很方便。

【FTP简介】
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
简单的来说文件传输协议,在硬盘中开辟一块磁盘空间,提供用户的文件的上传和下载。
参考资料:http://ke..com/link?url=_gN_KNYhSasD1rzdpGRTTx6uRcERmfyjC_6ztM_lxgMkcAndC9Gj47YfBVJ-LgyE0dLhQByRBTsM7#2

⑶ ftp服务器具有哪些功能

FTP(File Transfer Protocol),是文件传输协议的简称。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。

FTP的主要功能:

FTP(File Transfer Protocol),是文件传输协议的简称。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。

(1)把本地计算机上的一个或多个文件传送到远程计算机,或从远程计算机上获取一个或多个文件。所谓传送文件并不是移动,而是复制,即拷贝。FTP传送的是文件的副本,在完成文件传送文件传输之后,被传输的文件并不从源端消失,而是仍然在计算机的磁盘上存在;

(2)能够传输多种类型、多种结构、多种格式的文件,允许用户选择文本文件(ASCII)、二进制文件(Binary)两种文件类型,和文件(File)、纪录(RECORD)、页(Page)3种文件结构,还可以选择文件的格式以及文件传输的模式等。用户可以根据FTP会话双方所用的系统及要传输的文件,确定在文件传输时选择哪一种文件类型和结构;

(3)提供对本地计算机和远程计算机的目录操作功能。可在本地计算机或远程计算机上建立或删除目录,改变当前工作目录,打印目录和文件的列表等;

(4)对文件进行改名、删除、显示文件内容等;

(5)用户使用FTP能够访问匿名FTP服务器,从中获取大量的免费或共享软件。

⑷ 如何实现实时监控FTP服务器收到上传文件

实时监控没用过,我们一般都是通过上传日子来监控的。不过公司早就把ftp换成爱米云共享网盘,比ftp更好用,功能也多,日志监考也方便

⑸ 关于FTP服务器实时更新的问题

在FTP服务器上创建一个用户给他写入权限,

客户端B访问FTP服务器时用那个用户登录,

把文件从FTP上复制到客户端本地B,

打开文件修改完成后上传覆盖原文件,

这样FTP服务器的数据也就被更新了

这是很传统的更新方法了

如果用linux下的VSFTP软件的话,应该如何具体设置呢?
还没有开始学习Linux,这个帮不了你了

⑹ 什么是FTP及什么是FTP服务器

FTP是什么
其实通俗的说FTP是一种数据传输协议,负责将我们电脑上的数据与服务器数据进行交换,比如我们要将在我们电脑中制作的网站程序传到服务器上就需要使用FTP工具,将数据从电脑传送到服务器。专业的说,FTP(全称:File
Transfer
Protocol)是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上载文件,创建或改变服务器上的目录,一般我们均是将我们电脑中的内容与服务器数据进行性传输。其实电脑与服务器是一样的,只是服务器上安装的是服务器系统,并且服务器稳定性与质量要求高些,因为服务器一般放在诸如电信等机房中,24小时都开机,这样我们才可以一直访问服务器中的相关信息。

FTP服务器是什么

上面我们简单的介绍下FTP是什么,但是还有一个FTP服务器概念大家不要混淆掉了。我们可以再电脑中安装FTP工具负责将电脑中的数据传输到服务器当中,这是服务器就称为FTP服务器,而我们的电脑称为客户端。简单的说FTP服务器就是一台存储文件的服务器,供用户上传或下载文件。

⑺ FTP与Http的区别

1、定义不一样

ftp是文件传输协议,http是超文本传输协议,本质上是不一样的两个传输协议,一个针对文件,一个针对超文本。

2、运作方式不一样

HTTP协议是基于请求/响应范式的。最简单的情况可能是在用户代理(UA)和源服务器(O)之间通过一个单独的连接来完成。ftp则有ASCII、二进制两种传输方式,不同传输方式下的运行是不一样的。

3、时效性不一样

FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登录进程。http的连接是实时的,即使有延时,也是非常细微的差距。

(7)FTP的实时性分析扩展阅读:

FTP的作用:

正如其名所示:FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。

HTTP的作用:

HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。

HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。

⑻ 请教ftp上如何做到实时(或定期每5秒)监视某几个文件夹若更新则下载里面更新的,还有多用户home

日志中有记录,想要这么做完全没有必要的

⑼ 怎样的架构设计才是真正的数据仓库架构

一直想整理一下这块内容,既然是漫谈,就想起什么说什么吧。我一直是在互联网行业,就以互联网行业来说。
先大概列一下互联网行业数据仓库、数据平台的用途:

  • 整合公司所有业务数据,建立统一的数据中心;

  • 提供各种报表,有给高层的,有给各个业务的;

  • 为网站运营提供运营上的数据支持,就是通过数据,让运营及时了解网站和产品的运营效果;

  • 为各个业务提供线上或线下的数据支持,成为公司统一的数据交换与提供平台;

  • 分析用户行为数据,通过数据挖掘来降低投入成本,提高投入效果;比如广告定向精准投放、用户个性化推荐等;

  • 开发数据产品,直接或间接为公司盈利;

  • 建设开放数据平台,开放公司数据;

  • 。。。。。。


  • 上面列出的内容看上去和传统行业数据仓库用途差不多,并且都要求数据仓库/数据平台有很好的稳定性、可靠性;但在互联网行业,除了数据量大之外,越来越多的业务要求时效性,甚至很多是要求实时的 ,另外,互联网行业的业务变化非常快,不可能像传统行业一样,可以使用自顶向下的方法建立数据仓库,一劳永逸,它要求新的业务很快能融入数据仓库中来,老的下线的业务,能很方便的从现有的数据仓库中下线;

  • 其实,互联网行业的数据仓库就是所谓的敏捷数据仓库,不但要求能快速的响应数据,也要求能快速的响应业务;

  • 建设敏捷数据仓库,除了对架构技术上的要求之外,还有一个很重要的方面,就是数据建模,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。应对这种情况,一般是先将核心的持久化的业务进行深度建模(比如:基于网站日志建立的网站统计分析模型和用户浏览轨迹模型;基于公司核心用户数据建立的用户模型),其它的业务一般都采用维度+宽表的方式来建立数据模型。这块是后话。

  • 整体架构下面的图是我们目前使用的数据平台架构图,其实大多公司应该都差不多:

  • 逻辑上,一般都有数据采集层、数据存储与分析层、数据共享层、数据应用层。可能叫法有所不同,本质上的角色都大同小异。

  • 我们从下往上看:

  • 数据采集数据采集层的任务就是把数据从各种数据源中采集和存储到数据存储上,期间有可能会做一些简单的清洗。


  • 数据源的种类比较多:

  • 网站日志:


  • 作为互联网行业,网站日志占的份额最大,网站日志存储在多台网站日志服务器上,

  • 一般是在每台网站日志服务器上部署flume agent,实时的收集网站日志并存储到HDFS上;

  • 业务数据库


  • 业务数据库的种类也是多种多样,有Mysql、Oracle、SqlServer等,这时候,我们迫切的需要一种能从各种数据库中将数据同步到HDFS上的工具,Sqoop是一种,但是Sqoop太过繁重,而且不管数据量大小,都需要启动MapRece来执行,而且需要Hadoop集群的每台机器都能访问业务数据库;应对此场景,淘宝开源的DataX,是一个很好的解决方案(可参考文章 《异构数据源海量数据交换工具-Taobao DataX 下载和使用》),有资源的话,可以基于DataX之上做二次开发,就能非常好的解决,我们目前使用的DataHub也是。

  • 当然,Flume通过配置与开发,也可以实时的从数据库中同步数据到HDFS。

  • 来自于Ftp/Http的数据源:


  • 有可能一些合作伙伴提供的数据,需要通过Ftp/Http等定时获取,DataX也可以满足该需求;

  • 其他数据源:


  • 比如一些手工录入的数据,只需要提供一个接口或小程序,即可完成;


  • 数据存储与分析毋庸置疑,HDFS是大数据环境下数据仓库/数据平台最完美的数据存储解决方案。


  • 离线数据分析与计算,也就是对实时性要求不高的部分,在我看来,Hive还是首当其冲的选择,丰富的数据类型、内置函数;压缩比非常高的ORC文件存储格式;非常方便的SQL支持,使得Hive在基于结构化数据上的统计分析远远比MapRece要高效的多,一句SQL可以完成的需求,开发MR可能需要上百行代码;

  • 当然,使用Hadoop框架自然而然也提供了MapRece接口,如果真的很乐意开发Java,或者对SQL不熟,那么也可以使用MapRece来做分析与计算;Spark是这两年非常火的,经过实践,它的性能的确比MapRece要好很多,而且和Hive、Yarn结合的越来越好,因此,必须支持使用Spark和SparkSQL来做分析和计算。因为已经有Hadoop Yarn,使用Spark其实是非常容易的,不用单独部署Spark集群,关于Spark On Yarn的相关文章,可参考:《Spark On Yarn系列文章》

  • 实时计算部分,后面单独说。

  • 数据共享这里的数据共享,其实指的是前面数据分析与计算后的结果存放的地方,其实就是关系型数据库和NOSQL数据库;


  • 前面使用Hive、MR、Spark、SparkSQL分析和计算的结果,还是在HDFS上,但大多业务和应用不可能直接从HDFS上获取数据,那么就需要一个数据共享的地方,使得各业务和产品能方便的获取数据;和数据采集层到HDFS刚好相反,这里需要一个从HDFS将数据同步至其他目标数据源的工具,同样,DataX也可以满足。

  • 另外,一些实时计算的结果数据可能由实时计算模块直接写入数据共享。


  • 数据应用
  • 业务产品


  • 业务产品所使用的数据,已经存在于数据共享层,他们直接从数据共享层访问即可;

  • 报表


  • 同业务产品,报表所使用的数据,一般也是已经统计汇总好的,存放于数据共享层;

  • 即席查询


  • 即席查询的用户有很多,有可能是数据开发人员、网站和产品运营人员、数据分析人员、甚至是部门老大,他们都有即席查询数据的需求;

  • 这种即席查询通常是现有的报表和数据共享层的数据并不能满足他们的需求,需要从数据存储层直接查询。

  • 即席查询一般是通过SQL完成,最大的难度在于响应速度上,使用Hive有点慢,目前我的解决方案是SparkSQL,它的响应速度较Hive快很多,而且能很好的与Hive兼容。

  • 当然,你也可以使用Impala,如果不在乎平台中再多一个框架的话。

  • OLAP


  • 目前,很多的OLAP工具不能很好的支持从HDFS上直接获取数据,都是通过将需要的数据同步到关系型数据库中做OLAP,但如果数据量巨大的话,关系型数据库显然不行;

  • 这时候,需要做相应的开发,从HDFS或者HBase中获取数据,完成OLAP的功能;

  • 比如:根据用户在界面上选择的不定的维度和指标,通过开发接口,从HBase中获取数据来展示。

  • 其它数据接口


  • 这种接口有通用的,有定制的。比如:一个从Redis中获取用户属性的接口是通用的,所有的业务都可以调用这个接口来获取用户属性。


  • 实时计算现在业务对数据仓库实时性的需求越来越多,比如:实时的了解网站的整体流量;实时的获取一个广告的曝光和点击;在海量数据下,依靠传统数据库和传统实现方法基本完成不了,需要的是一种分布式的、高吞吐量的、延时低的、高可靠的实时计算框架;Storm在这块是比较成熟了,但我选择Spark Streaming,原因很简单,不想多引入一个框架到平台中,另外,Spark Streaming比Storm延时性高那么一点点,那对于我们的需要可以忽略。

  • 我们目前使用Spark Streaming实现了实时的网站流量统计、实时的广告效果统计两块功能。

  • 做法也很简单,由Flume在前端日志服务器上收集网站日志和广告日志,实时的发送给Spark Streaming,由Spark Streaming完成统计,将数据存储至Redis,业务通过访问Redis实时获取。

  • 任务调度与监控在数据仓库/数据平台中,有各种各样非常多的程序和任务,比如:数据采集任务、数据同步任务、数据分析任务等;


  • 这些任务除了定时调度,还存在非常复杂的任务依赖关系,比如:数据分析任务必须等相应的数据采集任务完成后才能开始;数据同步任务需要等数据分析任务完成后才能开始;这就需要一个非常完善的任务调度与监控系统,它作为数据仓库/数据平台的中枢,负责调度和监控所有任务的分配与运行。

  • 前面有写过文章,《大数据平台中的任务调度与监控》,这里不再累赘。

  • 总结在我看来架构并不是技术越多越新越好,而是在可以满足需求的情况下,越简单越稳定越好。目前在我们的数据平台中,开发更多的是关注业务,而不是技术,他们把业务和需求搞清楚了,基本上只需要做简单的SQL开发,然后配置到调度系统就可以了,如果任务异常,会收到告警。这样,可以使更多的资源专注于业务之上。

⑽ 什么是FTP

什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp协议对话,并且能访问Internet, 你可以用ftp命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。
FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。
1.ASCII传输方式:假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。
但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。
2.二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。
如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢 ,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。
5. FTP的工作方式
FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTP Server。
下面介绍一个这两种方式的工作原理:
Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。
Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。
很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作

FTP(File Transfer Protocol)是文件传输协议的简称。
FTP的作用
正如其名所示:FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
FTP工作原理
拿下传文件为例,当你启动FTP从远程计算机拷贝文件时,你事实上启动了两个程序:一个本地机上的FTP客户程序:它向FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的FTP服务器程序,它响应你的请求把你指定的文件传送到你的计算机中。FTP采用“客户机/服务器”方式,用户端要在自己的本地计算机上安装FTP客户程序。FTP客户程序有字符界面和图形界面两种。字符界面的FTP的命令复杂、繁多。图形界面的FTP客户程序,操作上要简洁方便的多。
简单地说,支持FTP协议的服务器就是FTP服务器,下面介绍一下什么是FTP协议(文件传输协议)
一般来说,用户联网的首要目的就是实现信息共享,文件传输是信息共享非常重要的一个内容之一。Internet上早期实现传输文件,并不是一件容易的事,我们知道 Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet上的计算机已有上千万台,而这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。
与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。
在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上载"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上载"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上载(下载)文件。
使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可上载或下载文件。也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的。
匿名FTP是这样一种机制,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。系统管理员建立了一个特殊的用户ID,名为anonymous, Internet上的任何人在任何地方都可使用该用户ID。
通过FTP程序连接匿名FTP主机的方式同连接普通FTP主机的方式差不多,只是在要求提供用户标识ID时必须输入anonymous,该用户ID的口令可以是任意的字符串。习惯上,用自己的E-mail地址作为口令,使系统维护程序能够记录下来谁在存取这些文件。
值得注意的是,匿名FTP不适用于所有Internet主机,它只适用于那些提供了这项服务的主机。
当远程主机提供匿名FTP服务时,会指定某些目录向公众开放,允许匿名存取。系统中的其余目录则处于隐匿状态。作为一种安全措施,大多数匿名FTP主机都允许用户从其下载文件,而不允许用户向其上载文件,也就是说,用户可将匿名FTP主机上的所有文件全部拷贝到自己的机器上,但不能将自己机器上的任何一个文件拷贝至匿名FTP主机上。即使有些匿名FTP主机确实允许用户上载文件,用户也只能将文件上载至某一指定上载目录中。随后,系统管理员会去检查这些文件,他会将这些文件移至另一个公共下载目录中,供其他用户下载,利用这种方式,远程主机的用户得到了保护,避免了有人上载有问题的文件,如带病毒的文件。
作为一个Internet用户,可通过FTP在任何两台Internet主机之间拷贝文件。但是,实际上大多数人只有一个Internet帐户,FTP主要用于下载公共文件,例如共享软件、各公司技术支持文件等。 Internet上有成千上万台匿名FTP主机,这些主机上存放着数不清的文件,供用户免费拷贝。实际上,几乎所有类型的信息,所有类型的计算机程序都可以在Internet上找到。这是Internet吸引我们的重要原因之一。
匿名FTP使用户有机会存取到世界上最大的信息库,这个信息库是日积月累起来的,并且还在不断增长,永不关闭,涉及到几乎所有主题。而且,这一切是免费的。
匿名FTP是Internet网上发布软件的常用方法。Internet之所以能延续到今天,是因为人们使用通过标准协议提供标准服务的程序。像这样的程序,有许多就是通过匿名FTP发布的,任何人都可以存取它们。
Internet中的有数目巨大的匿名FTP主机以及更多的文件,那么到底怎样才能知道某一特定文件位于哪个匿名FTP主机上的那个目录中呢?这正是Archie服务器所要完成的工作。Archie将自动在FTP主机中进行搜索,构造一个包含全部文件目录信息的数据库,使你可以直接找到所需文件的位置信息。

FTP出错解决和分析

发现文件在FTP中无法直接删除、改名、改变属性在linux的虚拟主机中常会出现~
现在找到了解决办法(文末上传附件)
注意: 请慎重使用此程序,如因使用此程序导致您有任何损失,此程序作者、发帖人均不会对其负任何责任!
解压后里面包含两个工具:
1.File Manager_Web FTP,
File Manager帮助你直接修改文件,包括属性
用记事本打开 file_manager.php 修改密码,
上传到 FTP 中运行,输入密码后即可进行管理!
Web FTP,利用web方式登陆FTP主机
上传到所有文件到ftp中,运行 webftp.php,进入后
主机 栏 写上你的ftp主机地址
端口 栏 ftp主机默认是 21
用户 栏 输入你的ftp主机所用账号
密码 栏 输入你的ftp主机所用账号的对应密码
然后点 登陆
即可轻松进入你的FTP主机!
2.del,
解压后只有一个 del.php文件,上传到 ftp中按照说明进行删除文件或目录

ps.只找到了解决办法~而此问题出现的原因尚不明