windows下数据库文件使用脚本同步到linux下的mysql数据库中
1.背景
windows server 2008 下 每天会有 *.sql数据文件
需要上传到linux 中的mysql数据库中
而运维人员是在 windows server 下使用 xshell 连接 linux 下进行导入导出来进行操作
客户要求:1.点击桌面上的程序达成 上传到linux下的mysql数据库中。
2.要解决的问题
1.通过什么来让数据文件 上传到 linux 下
2.怎么才可以点击一下就达成 window下的数据文件 上传到linux下
3.数据文件到达后 怎么做才可以 在window下 让数据同步到数据库中
1.解决第一个问题
1.通过什么来让数据文件 上传到 linux 下
可用方法 FTP samba NFS 文件共享服务
因为问题2 要在window下实行 优先想到 使用ftp 因为 ftp在windows 下可以通过cmd 直接执行

2.解决第二个问题
怎么才可以点击一下就达成 window下的数据文件 上传到linux下
问题一、如何才可以 把windows下的数据文件上传到ftp上呢???


问题二、我怎么才可以点击一下就可以完成这样的操作呢
我想到了windows下的批处理文件.bat
首先 ftp 客户端是windows下自带的
所以可以直接调用 但是我又需要在ftp下有这么多的操作怎么才可以呢
ftp -s脚本 可以把你在ftp的指令 直接写入文件中 而用-s 直接在ftp下运行

但是又有了一个新的问题
每次上传一个sql文件都要 yes 一下 ???
这个问题困扰了我很久
直到我发现了这个命令
交互模式:关闭


3.解决第三个问题
数据文件到达linux 怎么样才可以 在windows操作同步到数据库中呢???
首先 :在linux下如果同步到库中呢
mysql -uroot -p 库名 < 路径
就这一个指令 ,我完全可以在linux写的shell脚本中去运行
这样就解决了备份 但是 你怎么 在windows端下 进行操作呢
我首先想到了putty.exe
如果 可以在cmd 直接调用putty 我就直接可以写批处理文件 来达成我要做的事情

putty登录linux需要什么
ip地址 用户名 密码 端口 我怎么才可以把他们一起 启动呢
putty.exe -ssh -pw 123789456 root@192.168.91.59
但是我们的最终目的是什么???
在windows 下运行 shell 脚本 同步数据库
putty.exe -m 脚本
putty.exe -ssh -pw 123789456 -m 脚本名字 root@192.168.91.59
这样就可以 在windows 下运行 shell 脚本 同步 linux 数据库
下面放成品的代码 代码只是为了功能 完全可以再缩短很多
注意:将这个批处理 与putty.exe 放到有sql的文件夹下运行
@echo off
color 0a
cd /d %~dp0
if exist *.sql (goto next) else (goto baddir)
:next
@Echo Off
color 3E
set /p var=请输入你要配置的IP地址:
set /p pass=请输入root密码:
cls
title 阿姆斯特朗喷气式阿姆斯特朗上传同步工具(2018.4.21)
echo.【功能说明】
echo.通过FTP把当前目录下的.sql文件同步到目标mysql中
echo.一键搭建环境、一键上传、一键同步增加工作效率
echo.
echo.【特别提醒】
echo.1. 如果首次运行,获取秘钥请手动点击确定
echo.2. 工具使用顺序(1)(2)单独使用(2)会无效
echo.3. 需要保证yum源可以正常安装FTP服务
echo 4. window7下完美运行,win10下可能会出现putty启动慢
echo.5. sql文件默认存放在/LT/date下
echo.6. 同步完成默认放进/LT/lajixiang下 默认保存5天
echo.7. 如sql过大,上传时间长属于正常现象,请勿关闭
echo.8. 最终解释权为作者所有
echo. 如果当前服务器安装了FTP服务请谨慎使用 谨防数据丢失!!
echo.
echo.
:on
cd /d %~dp0
choice /c 1234 /m "请输入编号:(1)创建;(2)同步;(3)卸载;(4)关闭;
if %errorlevel%==4 goto guanbi
if %errorlevel%==3 goto xiezai
if %errorlevel%==2 goto tongbu
if %errorlevel%==1 goto dajian
:dajian
@echo off
echo 搭建环境并上传......
echo ^#!/bin/bash^ >linux.sh
echo ^yum -y install vsftpd^ >>linux.sh
echo ^useradd -p 123789456 litong^ >>linux.sh
echo ^echo 'litong:123789456'^|chpasswd^ >>linux.sh
echo ^mkdir /LT/data -p^ >>linux.sh
echo ^mkdir /LT/lajixiang -p^ >>linux.sh
echo ^chmod 777 /LT/data^ >>linux.sh
echo ^chmod 777 /LT/lajixiang^ >>linux.sh
echo ^echo anonymous_enable=YES ^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo local_enable=YES ^>^> /etc/vsftpd/vsftpd.conf ^ >>linux.sh
echo ^echo write_enable=YES ^>^> /etc/vsftpd/vsftpd.conf ^ >>linux.sh
echo ^echo local_umask=022 ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo dirmessage_enable=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo xferlog_enable=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo connect_from_port_20=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo xferlog_std_format=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo listen=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo pam_service_name=vsftpd ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo userlist_enable=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo tcp_wrappers=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo local_root=/LT/data ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo userlist_deny=NO ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo litong ^> /etc/vsftpd/user_list^ >>linux.sh
echo ^service iptables stop^ >>linux.sh
echo ^setenforce 0^ >>linux.sh
echo ^service vsftpd restart^ >>linux.sh
putty.exe -ssh -pw %pass% -m linux.sh root@%var%
del linux.sh
Echo open %var% >up
Echo litong>>up
Echo 123789456>>up
Echo prompt >>up
Echo mput *.sql>>up
Echo bye>>up
FTP -s:up
del up
echo 上传成功
goto on
:tongbu
pause
set /p zhanghu=数据库账户:
set /p mima=数据库密码:
set /p kuming=将要同步的库名:
del
echo 同步到数据库中......
echo #/bin/bash >peizhi.sh
echo mysql -u%zhanghu% -p%mima% %kuming% ^</LT/data/*.sql >>peizhi.sh
echo mv /LT/data/*.sql /LT/lajixiang/ >>peizhi.sh
echo find /lt/lajixiang/*.sql -mtime +5 ^|xargs rm -rf >>peizhi.sh
putty.exe -ssh -pw %pass% -m peizhi.sh root@%var%
del peizhi.sh
echo 同步成功
goto on
:xiezai
echo 卸载环境中......
echo rm -r /LT >xiezaihuanjing.sh
echo userdel -r litong >>xiezaihuanjing.sh
echo yum -y remove vsftpd >>xiezaihuanjing.sh
putty.exe -ssh -pw %pass% -m xiezaihuanjing.sh root@%var%
del xiezaihuanjing.sh
echo 卸载成功
goto on
:baddir
echo.
echo 警告:请将本工具放在要上传的sql文件夹下再运行,否则将出现不可预料的后果!
echo.
echo (例:若sql文件在目录为【D:\date】,则将该工具放在【D:\date】目录下后再执行。)
echo.
pause
echo 退出脚本
exit
:guanbi
exit
以上脚本中有很多可以优化的地方 只是自己不愿在去弄了 有兴趣的可以 优化一下 比如 shell中的查找替换可以用sed来做
转载请标注
windows下数据库文件使用脚本同步到linux下的mysql数据库中的更多相关文章
- Dcloud课程6 php脚本如何在Linux下定时更新数据
Dcloud课程6 php脚本如何在Linux下定时更新数据 一.总结 一句话总结:linux下用crontab命令实现定时任务. 1.linux下执行php脚本用什么命令? 直接用php命令php ...
- centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾
centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾 系统:centos6.5 1.创建脚本目录 mkdir -p /usr/local/sh/ 创建备份web ...
- Java扫描指定文件路径下的文件并且递归扫描其子目录下的所有文件
本文主要实现了扫描指定文件路径下的文件,递归扫描其子目录下的所有文件信息,示例文件为: 要求将后缀为.dat的文件夹信息也写入到数据库中,然后将.chk文件解析,将文件中对应的内容读出来写入到数据库, ...
- linux应用之mysql数据库的安装及配置(centos)
CentOS下Mysql数据库的安装与配置 如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有详细讲 ...
- Linux环境安装MySQL数据库
1. 下载mysql安装包 下载地址1: http://www.mysql.com/ (mysql官网) 下载地址2: http://mirrors.sohu.com/mysql/ (其 ...
- Linux环境安装MySQL数据库(RPM格式的软件包)
1. 下载mysql安装包 下载地址1: http://www.mysql.com/ (mysql官网) 下载地址2: http://mirrors.sohu.com/mysql/ (其 ...
- 将Windows下的文件同步到Linux下
需求:把Windows下的某些文件自动传送到Linux指定目录下 实现: 1. Windows下安装 WinSCP工具,并把Liunx服务器信息保存 2. 编写脚本,实现双击工具就把Windows下的 ...
- windows下写的脚本,在linux下执行失败
Windows中的换行符为CRLF, 即正则表达式的rn(ASCII码为13和10), 而Unix(或Linux)换行符为LF, 即正则表达式的n. 在Windows和Linux下协同工作的时候, 往 ...
- (原创)Windows下编译的Shell脚本不能再Linux中运行的解决办法
一.原理 Windows编译的文件和Linux编译的文件格式不太一样,导致在Linux运行Shell脚本的时候会提示:/bin/bash^M: bad interpreter: 没有那个文件或目录. ...
随机推荐
- Go Web:HttpRouter路由
HttpRouter是一个轻量级但却非常高效的multiplexer.手册: https://godoc.org/github.com/julienschmidt/httprouter https:/ ...
- Python 的名称空间和作用域
最开始对名称空间的了解是在学习函数的时候,那时候知道了作用域的查找顺序,以及全局名称空间和局部名称空间,产生疑惑的时候为学递归的时候,那时候还没有名称空间这个概念,只知道递归有个最大深度,那时候以后递 ...
- [译]如何在.NET Core中使用System.Drawing?
你大概知道System.Drawing,它是一个执行图形相关任务的流行的API,同时它也不属于.NET Core的一部分.最初是把.NET Core作为云端框架设计的,它不包含非云端相关API.另一方 ...
- [转]angular 禁止缓存
本文转自:https://www.cnblogs.com/jonney-wang/p/9797906.html angular 单页面开发,会存在和管理很多HTML和JS文件,缓存有时是个麻烦. 在开 ...
- Java集合类根接口:Collection 和 Map
前言 在前文中我们了解了几种常见的数据结构,这些数据结构有着各自的应用场景,并且被广泛的应用于编程语言中,其中,Java中的集合类就是基于这些数据结构为基础. Java的集合类是一些非常实用的工具类, ...
- Mac下写博客工具ecto相关资料
下载地址: https://www.macupdate.com/app/mac/8918/ecto 相关注册码: http://www.cnblogs.com/yssgyw/p/3284501.htm ...
- js动画 Css提供的运动 js提供的运动
1. 动画 (1) Css样式提供了运动 过渡的属性transition 从一种情况到另一种情况叫过渡 Transition:attr time linear delay: ...
- JavaScript是如何工作的:Web Workers的构建块 + 5个使用他们的场景
摘要: 理解Web Workers. 原文:JavaScript是如何工作的:Web Workers的构建块 + 5个使用他们的场景 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 这 ...
- 10个最佳Node.js企业应用案例:从Uber到LinkedIn
译者按: Node.js 8已经发布了,NPM模块每周下载量早已超过10亿,从Uber到LinkedIn都在使用Node.js,谁说JavaScript不能写后台? - 原文: 10 best Nod ...
- react-conponent-secondesElapsed
<!DOCTYPE html> <html> <head> <script src="../../build/react.js">& ...
