FTP接口上传文件到对方服务器

本文记录了一个通过FTP自动将MySQL和Oracle数据库数据导出为CSV文件,并上传到远程服务器的过程。利用shell脚本进行文件删除、数据获取、格式转换,借助Kettle进行数据库连接与数据提取,最后通过crontab实现定时任务执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近有个新的需求:对方要求每月1号的1点左右上传2个CSV文件到他们服务器的根目录下,2个csv文件分别是mysql和oracle数据库中的数据
以前没搞过类似的需求,这里记录下:
deleteCSV.sh(删除以前的文件)内容如下:

#!/bin/bash
rm -rf /home/gaorui/bocoftp/*.txt
rm -rf /home/gaorui/bocoftp/*.csv 

getCSV.sh(获取mysql表中的数据)内容如下:
其中set names gbk解决乱码问题

#!/bin/bash
mysql -uroot -proot -h 132.xx.xx.xx cspdb -e "set names gbk; SELECT
 b.servicecity 城市,a.call_id 投诉ID,
 b.inserttime 投诉时间,b.netstyle 网络制式,
 a.srv_code 用户号码, '' 客户类型,b.longitude 经度,
 b.latitude 纬度,''  客户品牌,
 b.infotype 投诉原因, ''  投诉详情,
 b.nettype  信号情况,replace(replace(b.address,char(13),''),char(10),'') 用户投诉详细地址      
FROM
 
### 创建FTP服务器的方法 为了创建一个基于C语言的FTP服务器,需要深入了解网络编程的基础知识。此过程涉及到操作系统的底层功能、TCP/IP协议栈的应用层——具体来说就是FTP协议[^2]。 #### 控制连接与数据连接 FTP工作依赖两个独立的TCP连接:一个是用于传递命令和状态码的控制连接;另一个则是实际的数据传输所使用的数据连接。对于每种连接方式的选择(主动模式或被动模式),取决于客户端和服务端之间的防火墙配置等因素[^3]。 #### 文件传输机制 当用户发起下载请求时,服务端会读取本地磁盘上的目标文件并通过已建立好的数据链路将其发送给对方;而上传则相反,在接收到新到来的数据包之后入指定位置保存下来。此外还应支持断点续传等功能来提升用户体验。 #### 并发处理能力 考虑到可能存在的大量并发访问情况,采用多线程技术可以有效提高效率。每当有新的客户接入进来就会启动一个新的子进程/线程专门负责与其交互直至结束为止。这样不仅能够保证各个会话之间互不干扰而且还能充分利用硬件资源加快响应速度。 #### 安全措施考量 现代互联网环境下安全问题不容忽视。因此建议引入SSL/TLS加密手段保护敏感信息免遭窃听篡改风险。这通常意味着要在原有基础上增加额外的支持库比如OpenSSL来进行握手认证等一系列复杂流程。 下面给出一段简单的伪代码展示如何初始化监听socket等待来自外部世界的连接尝试: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #define PORT 2121 /* 设置监听端口号 */ #define BACKLOG 5 /* 最大排队数目 */ int main(void){ int sockfd; // 套接口描述符 struct sockaddr_in server_addr; // 服务器地址结构体 if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1){ perror("Socket"); exit(1); } memset(&server_addr, '\0', sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(PORT); server_addr.sin_addr.s_addr = htonl(INADDR_ANY); bind(sockfd,(struct sockaddr *)&server_addr,sizeof(server_addr)); listen(sockfd,BACKLOG); while(1){ accept(sockfd,NULL ,NULL ); printf("New connection established.\n"); } } ``` 这段代码仅展示了最基础的部分即设置好参数后开启持续性的接收循环。真正的FTP Server还需要在此之上构建完整的指令集解析逻辑以及相应的业务处理函数等更多细节部分。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值