再识ProFTPD

roFTPD对大家来说是非常熟悉的,它对我们来说是FTP服务器,提供文件传输服务。之所以取名为“再识”,就是想向大家介绍它鲜为人知的一面。在介绍之前我们先来看一些事实:任意登录到一台机器进入proftpd的程序目录执行./proftpd --help,可以发现它带-l参数,可以列出所有编译进程序的模块。

背景
我相信,ProFTPD对大家来说是非常熟悉的,因为所有的服务器上都默认安装了系统部提供的ProFTPD。
它对我们来说是FTP服务器,提供文件传输服务。
之所以取名为“再识”,就是想向大家介绍它鲜为人知的一面。在介绍之前我们先来看一些事实:
• 任意登录到一台机器进入proftpd的程序目录执行./proftpd --help,可以发现它带-l参数,可以列出所有编译进程序的模块。
 



• 执行./proftpd -l 可以获得它所编译的模块列表。
 



从上面列出的内容可以看出ProFTPD是高度模块化的,类似apache,也是由core模块和各个基本功能模块以及扩展模块组合而成的。ProFTPD是开源的软件,以GPL许可发布的。 这意味着ProFTPD的功能是可自行定制化的,非常灵活;加上它已被我们广泛地部署和使用,是重要的数据传输软件。这两个特性使得ProFTPD具有了其他传输软件难以比拟的优势。
平时大家在使用它的时候总会觉得它如果支持这样的或者那样的功能就完美了,转念想自己开发难度又大了一点,不免放弃自己开发,但是仍然渴望有人能开发出来让自己使用。 实际上,已经有大量的牛人想过,做过了,并且分享了出来。下面我就对我认为比较有应用价值的ProFTPD模块进行介绍:

模块1:mod_sql
mod_sql模块是一个认证和记录的模块。它是由一个前端模块和一个后端数据库模块组成, 前端模块为后端模块保留指定的数据连接句柄。
它可以使得ProFTPD连接到一个指定的数据中,使用数据库中的信息作为其用户认证的比对源。这有什么好处呢?
• 我们来简单分析一下:
一般情况下,当我们添加一个系统账户后,这个账户就默认成为了ProFTPD的登录账户。这很方便,根本用不着这个模块。 但是如果有100台机器需要相同的账户,并且每台机器需要管理100不同的账户。按照普通方式需要添加100*100个账户,这显然是一个不小的体力活!!这还不算,如果有账户需要更改,每次更改都要同步100台机器,工作量依然不减。
这个时候如果使用该模块,可以使得这样的账户管理变得很轻松。因为只需要将这100台机器的ProFTPD都指向同一个数据库,而把那100个不同的账户全部放入数据库中管理,那么只需要导入100个账户,并安装100个带本模块的ProFTPD即可。即使后续账户需要变更,只需要简单地修改数据库中的账户信息即可完成变更。如果给这个数据再搭配一个简单的web管理页面,那么这些账户的管理工作就太easy了。
需要多台机器拥有同一个域名,对外提供无差别服务。多台机器一来是保证接口有足够的冗余性,二来可以提供足够的带宽供用户下载。
1. 要支持多个账户,每个备份数据对应一个唯一的发布账户。
发布接口应用非常适合使用这个模块,不仅简化了多台机器的账户管理,还简化了发布接口的扩展工作。因为增加一台机器只需要部署带mod_sql模块的ProFTPD并指向原有的账户数据即可完成扩展。
• 具体的安装和部署可以参考如下内容。

模块2:mod_deflate
这个mod_deflate模块支持FTP客户端与服务端传输使用mode-z算法压缩的数据,并且使得压缩/解压对用户透明。
它可以帮助我们解决低带宽下的数据传输问题。低带宽下,带宽是短板资源,使用压缩的方法,可以在低带宽下尽可能快地传输数据;并且它的压缩/解压对用户透明,并未增加用户的负担。获得这样收益的代价是消耗ftp客户端和服务端一定的cpu资源。 目前北京到深圳,中国到日本都存在带宽问题。应用它应该可以获得满意地效果。
针对这个模块,我们可以替换其中的压缩算法,并且可以只启用压缩,并启用解压,达到压缩备份的目的。当数据需要使用时,只需要开启解压,禁用压缩即可。
• 具体的安装和部署可以参考如下内容。

模块3:mod_tar
这个mod_tar模块支持FTP客户端在下载过程中将源文件打成tar包直接存储。
它可以帮助我们解决一些小文件的备份问题。大家都知道,小文件对于以文件为最小管理单元的系统来说是不高效的。特别是在传输的时候,文件之间切换的消耗已经远远大于其传输的消耗。这就是我们看到的小文件传输速度明显低于同样大小数据量大文件的传输速度。
目前备份服务对于小文件备份处理方法是要求用户在数据源端定时对需要备份的数据进行打包处理,我们再下载该包进行备份。 如果使用该模块,用户就无需自己先进行打包处理,也无需处理打包和下载之间的耦合关系了。
• 具体的安装和部署可以参考如下内容。

模块4:mod_exec
这个mod_exec提供了在ftp路径中执行外部命令的能力。虽然说这个功能有非常大的风险,但是也很方便,至少比ssh登录后执行要更易于管理。 它可以成为ssh的替代品。
• 具体的安装部署可以参考如下内容。

结语
实际上,ProFTPD所拥有的模块远不止这些,我给出的模块是挑选出来对备份服务有益的模块。大家可以从如下地址中获取更多更详细的内容:http://www.castaglia.org/proftpd/#Documentation
希望通过这篇文章,真正起到抛砖引玉的作用。其实不仅限于ProFTPD,我们身边有很多优秀架构的开源软件,都是我们可借鉴和利用的。

 

【本文首发于: 百度运维空间http://hi.baidu.com/ops_bd/blog/item/5a5bc62339b58020c9955971.html
关注百度技术沙龙

你可能感兴趣的:(职场,ftp,proFTPD,休闲,再识)