今天碰到一个需求是这样的:
要定时将linux服务器的数据库日志文件和数据库备份文件上传到FTP上。
问题分析:
1、服务器分为两台,一台服务器在公司总部机房,一台分公司机房;
2、公司总部服务器采用Linux操作系统,作为FTP客户端
3、分公司服务器用Windows 2008操作系统,并且安装了Server-U作为FTP服务器端
4、两台服务器相对互相都是在外网
5、防火墙已经做好端口的配置
首先,自己上网找了些关于Linux上传文件到FTP的shell脚本:
脚本如下:
backup_Ymd=`date +%Y-%m-%d`
echo "start time" $backup_Ymd
ftpServer=xxxxxxxxxxx(外网的域名)
ftpUser=username(FTP用户名)
ftpPasswd=password(FTP密码)
remoteDir=/mysql_log(FTP上存放目录)
localDir=/home/mysql/logs(本地目录)
/usr/kerberos/bin/ftp -niv <<!
open $ftpServer [port]
user $ftpUser $ftpPasswd
binary
cd $remoteDir
lcd $localDir
mput *.zip
bye
!
编写完脚本之后,执行此脚本,发现出现了一些异常情况:
start time 2013-08-1410
Connected to xxxxxxxxxxx.
220 Serv-U FTP Server v6.4 for WinSock ready...
500 'AUTH': command not understood.
500 'AUTH': command not understood.
KERBEROS_V4 rejected as an authentication type
Remote system type is UNIX.
Using binary mode to transfer files.
331 User name okay, need password.
230 User logged in, proceed.
200 Type set to I.
250 Directory changed to /mysql_log
Local directory now /home/mysql/logs
local: 2013-08-1007.zip remote: 2013-08-1007.zip
227 Entering Passive Mode (117,29,170,154,21,191)
ftp: connect: Connection timed out
221 Goodbye!
提示出现“227 Entering Passive Mode (117,29,170,154,21,191)”就出现连接超时的提示,无法传输文件。于是上网搜索此提示的相关信息,是连接模式选择不对,应当选用主动模式。所以,将FTP的pasv模式关闭即可!
#/bin/bash
backup_Ymd=`date +%Y-%m-%d`
echo "start time" $backup_Ymd
ftpServer=XXXXXXXXX
ftpUser=username
ftpPasswd=password
remoteDir=/mysql_log
localDir=/home/mysql/logs
/usr/kerberos/bin/ftp -niv <<!
open $ftpServer 29
user $ftpUser $ftpPasswd
passive #关闭被动模式
binary
cd $remoteDir
lcd $localDir
mput $backup_Ymd.zip
bye
!
注:
1、IE浏览器访问方式---------被动模式
2、Linux字符连接---------------被动模式
3、Windows字符连接---------主动模式
IE的设置只要在“工具------Internet选项-----高级-------使用被动FTP(去掉勾选)”
Linux下更改为主动连接的方式:
[root@localhost ~]# ftp XXXXXXXXX
Connected to XXXXXXXXXX.
220 Serv-U FTP Server v6.4 for WinSock ready...
500 'AUTH': command not understood.
500 'AUTH': command not understood.
KERBEROS_V4 rejected as an authentication type
Name (center.gouyundong.net:root): username
331 User name okay, need password.
Password:
230 User logged in, proceed.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (117,29,170,154,37,249)
ftp> passive
Passive mode off.
ftp> ls
200 PORT Command successful.
(补充Linux的Crontab的设置)
当脚本设置好,并且保存好后,就可以进入linux的crontab进行设置了。如果伙伴们不是很了解crontab的设置可以上网搜搜,或者查看crontab的帮助。
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
man crontab
或者
crontalb --help
进入crontab的设置:
crontab -e
30 7 * * * /usr/local/sbin/dblogsftp.sh
:wq
设置为每天的7点30分执行
注:可以通过日志目录查看脚本是否执行,而执行结果是否正确就得看你的的目的是否达到。当然在编写完脚本之后可以先测试是否可以执行,结果是否是自己想要的!
检查目录为:/var/log
文件为:cron
分享到:
相关推荐
Linux搭建FTP服务器实现匿名上传.doc
这是一款在windows机器上可以上传到linux服务器的ftp软件,简单好用
每日定时上传当前运行系统日志服务,配置当前每日本地产生的数据文件所在路径。再配置上传的远程 ftp路径就可以使用。需要在服务端配置好ftp服务。
linux ftp上传配置 Vsftp支持限额配置
Java编写的linux下定时通过ftp上传文件,windows和linux的区别就是路径符号不同。
linux 下 C++ 实现ftp下载和上传的功能
linux定时备份oracle自动上传 FTP
很实用的linux c ftp文件上传。简单易懂 欢迎使用。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
自己编写的linux c的ftp客户端,能够和服务器端进行比较好的交互,实现上传,下载,ls,cd等十几个命令。
在ubuntu linux下实现的FTP文件上传,程序自动监听目录下是否有图片文件,有文件则自动通过FTP上传到服务器端,同时删除目录下的文件,实现了批量文件上传,自动重命名文件,程序经测试,运行稳定。
linux下图形化ftp上传下载工具,很好用。
Linux ftp 实现文件传输,客户端,服务器端实现文件上传下载
XFTP,适合Linux服务器FTP上传,很方便,亲测可用,不用再烦恼如何往Linux服务器上传文件了。
linux下 ftp shell ,ftp客户端安装ftp-0.17-54.el6.x86_64.rpm 下载后,解压,上传rpm包到/usr/local/src下,执行rpm -ivh ftp-0.17-54.el6.x86_64.rpm(同时也要安装好vsftpd,查看service vsftpd status运行状态...
ftp上传下载 linux环境下程序 网络高级程序设计课程实验
winscp430 实现上传,windows也Linux之间ftp上传
本设计实现了ftp的设计,使用了socket网络编程,ftp基于cs模式,包含客户端和服务端,可以实现上传、下载、删除、添加等各种功能,支持断点续传、多用户登陆、错误日志等功能。运行环境是linux,压缩包内含有源代码...
linux ftp服务器上传文件夹时提示550错误问题解决方法.doc
非常好用的FTP文件上传和下载等管理类,可轻松移植到你的C++程序中,目前已经应用于我们项目中。这个类适用于windows环境下
一个后台定时任务,采用 quartz完成,系统文件可配置、支持文件ftp上传、下载含md5加解密,欢迎大家下载查看