CN107547645A - Linux服务端与windows客户端之间跨平台文件的传输方法 - Google Patents

Linux服务端与windows客户端之间跨平台文件的传输方法 Download PDF

Info

Publication number
CN107547645A
CN107547645A CN201710762400.XA CN201710762400A CN107547645A CN 107547645 A CN107547645 A CN 107547645A CN 201710762400 A CN201710762400 A CN 201710762400A CN 107547645 A CN107547645 A CN 107547645A
Authority
CN
China
Prior art keywords
file
client
folder
linux
permission
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710762400.XA
Other languages
English (en)
Other versions
CN107547645B (zh
Inventor
邱志斌
涂高元
杨其栓
郭永兴
陆云燕
张艳蓉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XIAMEN TIPRAY TECHNOLOGY Co Ltd
Original Assignee
XIAMEN TIPRAY TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by XIAMEN TIPRAY TECHNOLOGY Co Ltd filed Critical XIAMEN TIPRAY TECHNOLOGY Co Ltd
Priority to CN201710762400.XA priority Critical patent/CN107547645B/zh
Publication of CN107547645A publication Critical patent/CN107547645A/zh
Application granted granted Critical
Publication of CN107547645B publication Critical patent/CN107547645B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开一种Linux服务端与windows客户端之间跨平台文件的传输方法,步骤是:步骤1,判断vsftp服务是否接收到MLST指令,如果接收到该指令则开始查询文件目录,进入步骤2,否则处理接收到的其它指令的业务;步骤2,先获得文件/文件夹的路径与文件权限,拼接得到文件/文件夹信息串;步骤3,根据步骤2得到的返回结果,将结果发送到客户端;步骤4,发送成功后,给客户端发送250End消息,表示MLST动作结束;步骤5,客户端向linux服务器发送STOR或RETR指令,服务器根据指令对文件进行上传或下载操作。此种方法可实现vsftp服务缺失的指令功能,解决linux端vsftp服务与一些常见的windows客户端间的文件通信,以支持windows客户端与linux搭建的服务端间跨平台文件上传下载。

Description

Linux服务端与windows客户端之间跨平台文件的传输方法
技术领域
本发明属于文件传输技术领域,特别涉及一种Linux服务端与windows客户端之间跨平台传输文件的实现方法。
背景技术
Windows与Linux是目前最流行的两种操作系统。基于Linux运行稳定、功能强大、获取方便等优点因素的考虑,仍是作为很多项目中服务器的优选。
文件传输是操作系统中常见的行为活动,Linux也提供了文件传输的工具,其中包括vsftp服务实现linux端的文件上传下载,并有相关的接口实现。
目前的传输技术存在着如下不足:
(I)现有的vsftp服务虽然提供了文件上传下载指令接口(STOR与RETR),但无法满足与windows客户端间的文件上传与下载。
(II)主要缺失windows客户端一些指令的实现,如MLST指令,导致无法正常通信。
发明内容
本发明的目的,在于提供一种Linux服务端与windows客户端之间跨平台文件的传输方法,其可实现vsftp服务缺失的指令功能,解决linux端vsftp服务与一些常见的windows客户端间的文件通信,以支持windows客户端与linux搭建的服务端间跨平台文件上传下载。
为了达成上述目的,本发明的解决方案是:
一种Linux服务端与windows客户端之间跨平台文件的传输方法,包括如下步骤:
步骤1,将接收到的指令ftp_cmd_str与“MLST”比对,判断vsftp服务是否接收到MLST指令,如果接收到该指令则开始查询文件目录,进入步骤2,否则处理接收到的其它指令的业务,不进入后续步骤;
步骤2,根据接收到的MLST指令,先获得文件/文件夹的路径与文件权限,拼接得到文件/文件夹信息串,转步骤3;
步骤3,根据步骤2得到的返回结果,通过vsftp与客户端发送指令的接口vsf_cmdio_write_char将结果发送到客户端;
步骤4,发送成功后,给客户端发送250End消息,表示MLST动作结束,客户端收到250End消息,进入步骤5;
步骤5,客户端向linux服务器发送STOR或RETR指令,服务器根据指令对文件进行上传或下载操作。
上述步骤2的具体内容是:
步骤21,根据接收到的MLST指令,查询要进行处理的文件/文件夹,若未查询到,则返回权限值PERMISSION_INVALIDNAME,转步骤3;若查询到,则获取其相应的路径,转步骤22;
步骤22,根据当前用户信息和传入的指令,构造函数接口进行判断获取得到文件的权限,如果权限异常则转步骤3,否则转步骤23;
步骤23,拼接获取文件/文件夹信息串。
上述步骤23中,文件/文件夹信息串的形式是:文件类型,文件大小,文件最后修改时间,路径名;步骤23的具体内容是:
步骤231,根据步骤22得到的文件权限值,如果为PERMISSION_FILENOTDIR,得到子串type=file,如果权限为PERMISSION_DIRNOTFILE,则得到子串type=dir;
步骤232,计算获得文件的大小,得到子串size=%I64d,其中%I64d为size值类型;
步骤233,获取文件最后修改的时间,得到子串:
modify=%04d%02d%02d%02d%02d%02d
步骤234,最终整理拼接文件/文件夹信息串,格式为:
文件类型:type=file;size=%I64d;modify=%04d%02d%02d%02d%02d%02d路径名;
文件夹类型:type=dir;size=%I64d;modify=%04d%02d%02d%02d%02d%02d路径名。
上述步骤3的具体内容是:若步骤21返回文件不存在,或步骤22返回文件权限异常,则通过接口将550Permission denied/550Filename invalid/550directory notfound发送到客户端,然后中止退出,其中,550Permission denied表示用户无操作权限,550Filename invalid表示无效路径名,550directory not found表示存在其他错误;否则,结合步骤21返回的路径和步骤23返回的文件/文件夹信息串,将“250-Listing+文件/文件夹的路径”拼接通过接口发送给客户端,再将“文件/文件夹信息串”发送到客户端,再转步骤4。
上述步骤5中,服务器操作完成后,向客户端反馈文件操作结果,操作结果包括550表示异常,返回250表示成功。
现有方案只实现vsftp在Linux端的通信实现文件的上传下载,没有考虑到跨平台情况常见的windows客户端间兼容性,采用上述方案后,本发明能够实现这部分缺失,实现vsftp文件目录内容的检索,且支持与常见windows客户端间文件上传下载功能。
附图说明
图1是本发明的流程图。
具体实施方式
以下将结合附图,对本发明的技术方案及有益效果进行详细说明。
如图1所示,本发明提供一种Linux服务端与windows客户端之间跨平台文件的传输方法,主要完成接收到STOR(处理上传)或RETR(处理下载)指令之前的MLST指令处理,列出指定目录内容,通过与客户端间的发送指令接口vsf_cmdio_write或vsf_cmdio_write_char返回结果给客户端;所述传输方法具体包括如下步骤:
步骤1,将接收到的指令ftp_cmd_str与“MLST”比对,判断vsftp服务是否接收到MLST指令,如果接收到该指令则开始查询文件目录,进入步骤2,否则处理接收到的其它指令的业务,不进入后续步骤;
步骤2,根据接收到的MLST指令,先获得文件/文件夹的路径与文件权限,拼接得到文件/文件夹信息串,转步骤3;
具体内容是:
步骤21,根据接收到的MLST指令,查询要进行处理的文件/文件夹,若未查询到,则返回权限值PERMISSION_INVALIDNAME,转步骤3;若查询到,则获取其相应的路径(用于步骤23中拼接信息串),转步骤22;
步骤22,根据当前用户信息和传入的指令,构造函数接口进行判断获取得到文件的权限,如果权限异常(返回值非0)则转步骤31,否则转步骤23;
其中,文件权限包括:
PERMISSION_DENIED(0x01),//根据当前用户信息,判断是否有当前用户权限
PERMISSION_NOTFOUND(0x02),//未找到该文件/文件夹
PERMISSION_DIRNOTFILE(0x04|PERMISSION_DOESALREADYEXIST),//为文件夹
PERMISSION_FILENOTDIR(0x08|PERMISSION_DOESALREADYEXIST),//为文件
PERMISSION_DOESALREADYEXIST(0x10),//该文件/文件夹已经存在
PERMISSION_INVALIDNAME(0x20),//该文件/文件夹名无效
0(正常返回值)。
步骤23,拼接获取文件/文件夹信息串:
文件类型(文件夹或普通文件),文件大小,文件最后修改时间,路径名。其中最后修改时间与文件名之间用空格分割。
具体内容是:
步骤231,根据步骤22得到的文件权限值,如果为PERMISSION_FILENOTDIR,得到子串type=file,如果权限为PERMISSION_DIRNOTFILE,则得到子串type=dir;
步骤232,计算获得文件的大小,得到子串size=%I64d,其中%I64d为size值类型;
步骤233,获取文件最后修改的时间,得到子串:
modify=%04d%02d%02d%02d%02d%02d
步骤234,最终整理拼接文件/文件夹信息串,格式如:
文件类型:type=file;size=%I64d;modify=%04d%02d%02d%02d%02d%02d路径名;
文件夹类型:type=dir;size=%I64d;modify=%04d%02d%02d%02d%02d%02d路径名;
步骤3,根据步骤2中得到的返回结果,此处返回结果包括步骤22返回的权限和步骤23返回的文件/文件夹信息串,通过vsftp与客户端发送指令的接口vsf_cmdio_write_char将结果发送到客户端;
具体包括如下两种情况:
若文件不存在或文件权限异常,则通过接口将550Permission denied/550Filename invalid/550directory not found发送到客户端,然后中止退出。其中,550Permission denied表示用户无操作权限,550Filename invalid表示无效路径名,550directory not found表示存在其他错误。
如果文件权限正常(正常返回0),将“250-Listing+文件/文件夹的路径”拼接通过接口发送给客户端,再将“文件/文件夹信息串”发送到客户端,再转步骤4;
步骤4,上述结果发送成功,给客户端发送250End消息,表示MLST动作结束,客户端会收到250End消息,进入步骤5;
步骤5,客户端根据需要,向linux服务器(vsftpd服务)发送STOR或RETR指令,服务器接收到STOR(接收数据并且在服务器站点保存为文件)或RETR(传输文件副本)指令,对文件进行上传或下载操作。向客户端反馈文件操作结果,操作结果包括550表示异常,返回250表示成功。流程结束。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。

Claims (5)

1.一种Linux服务端与windows客户端之间跨平台文件的传输方法,其特征在于包括如下步骤:
步骤1,将接收到的指令ftp_cmd_str与“MLST”比对,判断vsftp服务是否接收到MLST指令,如果接收到该指令则开始查询文件目录,进入步骤2,否则处理接收到的其它指令的业务,不进入后续步骤;
步骤2,根据接收到的MLST指令,先获得文件/文件夹的路径与文件权限,拼接得到文件/文件夹信息串,转步骤3;
步骤3,根据步骤2得到的返回结果,通过vsftp与客户端发送指令的接口vsf_cmdio_write_char将结果发送到客户端;
步骤4,发送成功后,给客户端发送250End消息,表示MLST动作结束,客户端收到250End消息,进入步骤5;
步骤5,客户端向linux服务器发送STOR或RETR指令,服务器根据指令对文件进行上传或下载操作。
2.如权利要求1所述的Linux服务端与windows客户端之间跨平台文件的传输方法,其特征在于:所述步骤2的具体内容是:
步骤21,根据接收到的MLST指令,查询要进行处理的文件/文件夹,若未查询到,则返回权限值PERMISSION_INVALIDNAME,转步骤3;若查询到,则获取其相应的路径,转步骤22;
步骤22,根据当前用户信息和传入的指令,构造函数接口进行判断获取得到文件的权限,如果权限异常则转步骤3,否则转步骤23;
步骤23,拼接获取文件/文件夹信息串。
3.如权利要求2所述的Linux服务端与windows客户端之间跨平台文件的传输方法,其特征在于:所述步骤23中,文件/文件夹信息串的形式是:文件类型,文件大小,文件最后修改时间,路径名;步骤23的具体内容是:
步骤231,根据步骤22得到的文件权限值,如果为PERMISSION_FILENOTDIR,得到子串type=file,如果权限为PERMISSION_DIRNOTFILE,则得到子串type=dir;
步骤232,计算获得文件的大小,得到子串size=%I64d,其中%I64d为size值类型;
步骤233,获取文件最后修改的时间,得到子串:
modify=%04d%02d%02d%02d%02d%02d
步骤234,最终整理拼接文件/文件夹信息串,格式为:
文件类型:type=file;size=%I64d;modify=%04d%02d%02d%02d%02d%02d路径名;
文件夹类型:type=dir;size=%I64d;modify=%04d%02d%02d%02d%02d%02d路径名。
4.如权利要求2所述的Linux服务端与windows客户端之间跨平台文件的传输方法,其特征在于:所述步骤3的具体内容是:若步骤21返回文件不存在,或步骤22返回文件权限异常,则通过接口将550Permission denied/550Filename invalid/550directory notfound发送到客户端,然后中止退出,其中,550Permission denied表示用户无操作权限,550Filename invalid表示无效路径名,550directory not found表示存在其他错误;否则,结合步骤21返回的路径和步骤23返回的文件/文件夹信息串,将“250-Listing+文件/文件夹的路径”拼接通过接口发送给客户端,再将“文件/文件夹信息串”发送到客户端,再转步骤4。
5.如权利要求1所述的Linux服务端与windows客户端之间跨平台文件的传输方法,其特征在于:所述步骤5中,服务器操作完成后,向客户端反馈文件操作结果,操作结果包括550表示异常,返回250表示成功。
CN201710762400.XA 2017-08-30 2017-08-30 Linux服务端与windows客户端之间跨平台文件的传输方法 Active CN107547645B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710762400.XA CN107547645B (zh) 2017-08-30 2017-08-30 Linux服务端与windows客户端之间跨平台文件的传输方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710762400.XA CN107547645B (zh) 2017-08-30 2017-08-30 Linux服务端与windows客户端之间跨平台文件的传输方法

Publications (2)

Publication Number Publication Date
CN107547645A true CN107547645A (zh) 2018-01-05
CN107547645B CN107547645B (zh) 2020-10-02

Family

ID=60959025

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710762400.XA Active CN107547645B (zh) 2017-08-30 2017-08-30 Linux服务端与windows客户端之间跨平台文件的传输方法

Country Status (1)

Country Link
CN (1) CN107547645B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109040022A (zh) * 2018-06-29 2018-12-18 郑州云海信息技术有限公司 一种文件传输协议编译方法、装置及设备
CN109257420A (zh) * 2018-08-29 2019-01-22 郑州云海信息技术有限公司 一种文件互传方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040003091A1 (en) * 2002-06-26 2004-01-01 International Business Machines Corporation Accessing a remote iSeries or AS/400 computer system from an integrated development environment
US20130166764A1 (en) * 2008-10-28 2013-06-27 Oliver Boldt Using A Knowledge Network for File Transfer Protocol
CN104516687A (zh) * 2014-12-22 2015-04-15 中国科学院信息工程研究所 一种Linux块设备的Windows远程映射方法
US20150319216A1 (en) * 2014-04-30 2015-11-05 The Boeing Company Transferring files between different operating systems
CN106095678A (zh) * 2016-06-08 2016-11-09 上海爱数信息技术股份有限公司 用于Windows平台下数据库业务操作的自动化结果检查方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040003091A1 (en) * 2002-06-26 2004-01-01 International Business Machines Corporation Accessing a remote iSeries or AS/400 computer system from an integrated development environment
US20130166764A1 (en) * 2008-10-28 2013-06-27 Oliver Boldt Using A Knowledge Network for File Transfer Protocol
US20150319216A1 (en) * 2014-04-30 2015-11-05 The Boeing Company Transferring files between different operating systems
CN104516687A (zh) * 2014-12-22 2015-04-15 中国科学院信息工程研究所 一种Linux块设备的Windows远程映射方法
CN106095678A (zh) * 2016-06-08 2016-11-09 上海爱数信息技术股份有限公司 用于Windows平台下数据库业务操作的自动化结果检查方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
XIAOYUXIANSHENGING: "linux网络编程之实现跨平台PC之间进行文件传输", 《HTTPS://BLOG.CSDN.NET/XIAOYUXIANSHENGING/ARTICLE/DETAILS/69055948》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109040022A (zh) * 2018-06-29 2018-12-18 郑州云海信息技术有限公司 一种文件传输协议编译方法、装置及设备
CN109257420A (zh) * 2018-08-29 2019-01-22 郑州云海信息技术有限公司 一种文件互传方法和装置
CN109257420B (zh) * 2018-08-29 2021-07-02 郑州云海信息技术有限公司 一种文件互传方法和装置

Also Published As

Publication number Publication date
CN107547645B (zh) 2020-10-02

Similar Documents

Publication Publication Date Title
US9531802B2 (en) Data transmission and reception system
US9497284B2 (en) Apparatus and method for caching of compressed content in a content delivery network
US9984093B2 (en) Technique selection in a deduplication aware client environment
US20020065800A1 (en) HTTP archive file
US9602613B2 (en) Method and system for accelerating browsing sessions
CN102355426B (zh) 实现离线文件传输的方法和系统
EP2372574A1 (en) File storage synchronisation system and components thereof
US9491225B2 (en) Offline download method and system
US10367871B2 (en) System and method for all-in-one content stream in content-centric networks
CN103812882A (zh) 一种文件传输的方法及系统
US9917894B2 (en) Accelerating transfer protocols
CN103297447B (zh) 一种资源共享方法及其设备
US9916317B2 (en) Data transfer optimization through destination analytics and data de-duplication
CN102420843A (zh) 一种基于云压缩链接的压缩和解压缩方法、装置及系统
AU2001227019A1 (en) Methods and apparatus for downloading a file from a server
US20020059463A1 (en) Method and system for accelerating internet access through data compression
CN101635737A (zh) 下载方法、系统、p2p服务器、客户端
US20160057190A1 (en) System and method for reconstructable all-in-one content system
CN107547645A (zh) Linux服务端与windows客户端之间跨平台文件的传输方法
CN105074688B (zh) 使用对等节点图的基于流的数据去重复
WO2002010929A1 (en) System and method for serving compressed content over a computer network
US20030220914A1 (en) Method for managing data in a network
CN101184002A (zh) 一种点对点流量深度监测方法和设备
CN102638577B (zh) 一种采集种子文件的方法、设备及系统
WO2002019653A3 (en) System and method for transferring files

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant